// Copyright 2016 Proyectos y Sistemas de Mantenimiento SL (eProsima).
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

/*!
 * @file fusion_localization.h
 * This header file contains the declaration of the described types in the IDL file.
 *
 * This file was generated by the tool gen.
 */

#ifndef _FUSION_LOCALIZATION_H_
#define _FUSION_LOCALIZATION_H_


#include <stdint.h>
#include <array>
#include <string>
#include <vector>
#include <map>
#include <bitset>

#if defined(_WIN32)
#if defined(EPROSIMA_USER_DLL_EXPORT)
#define eProsima_user_DllExport __declspec( dllexport )
#else
#define eProsima_user_DllExport
#endif  // EPROSIMA_USER_DLL_EXPORT
#else
#define eProsima_user_DllExport
#endif  // _WIN32

#if defined(_WIN32)
#if defined(EPROSIMA_USER_DLL_EXPORT)
#if defined(fusion_localization_SOURCE)
#define fusion_localization_DllAPI __declspec( dllexport )
#else
#define fusion_localization_DllAPI __declspec( dllimport )
#endif // fusion_localization_SOURCE
#else
#define fusion_localization_DllAPI
#endif  // EPROSIMA_USER_DLL_EXPORT
#else
#define fusion_localization_DllAPI
#endif // _WIN32

namespace eprosima {
namespace fastcdr {
class Cdr;
} // namespace fastcdr
} // namespace eprosima


/*!
 * @brief This class represents the structure DDS_LidarPoint defined by the user in the IDL file.
 * @ingroup FUSION_LOCALIZATION
 */
class DDS_LidarPoint
{
public:

    /*!
     * @brief Default constructor.
     */
    eProsima_user_DllExport DDS_LidarPoint();

    /*!
     * @brief Default destructor.
     */
    eProsima_user_DllExport ~DDS_LidarPoint();

    /*!
     * @brief Copy constructor.
     * @param x Reference to the object DDS_LidarPoint that will be copied.
     */
    eProsima_user_DllExport DDS_LidarPoint(
            const DDS_LidarPoint& x);

    /*!
     * @brief Move constructor.
     * @param x Reference to the object DDS_LidarPoint that will be copied.
     */
    eProsima_user_DllExport DDS_LidarPoint(
            DDS_LidarPoint&& x);

    /*!
     * @brief Copy assignment.
     * @param x Reference to the object DDS_LidarPoint that will be copied.
     */
    eProsima_user_DllExport DDS_LidarPoint& operator =(
            const DDS_LidarPoint& x);

    /*!
     * @brief Move assignment.
     * @param x Reference to the object DDS_LidarPoint that will be copied.
     */
    eProsima_user_DllExport DDS_LidarPoint& operator =(
            DDS_LidarPoint&& x);

    /*!
     * @brief This function sets a value in member point_x
     * @param _point_x New value for member point_x
     */
    eProsima_user_DllExport void point_x(
            float _point_x);

    /*!
     * @brief This function returns the value of member point_x
     * @return Value of member point_x
     */
    eProsima_user_DllExport float point_x() const;

    /*!
     * @brief This function returns a reference to member point_x
     * @return Reference to member point_x
     */
    eProsima_user_DllExport float& point_x();

    /*!
     * @brief This function sets a value in member point_y
     * @param _point_y New value for member point_y
     */
    eProsima_user_DllExport void point_y(
            float _point_y);

    /*!
     * @brief This function returns the value of member point_y
     * @return Value of member point_y
     */
    eProsima_user_DllExport float point_y() const;

    /*!
     * @brief This function returns a reference to member point_y
     * @return Reference to member point_y
     */
    eProsima_user_DllExport float& point_y();

    /*!
     * @brief This function sets a value in member point_z
     * @param _point_z New value for member point_z
     */
    eProsima_user_DllExport void point_z(
            float _point_z);

    /*!
     * @brief This function returns the value of member point_z
     * @return Value of member point_z
     */
    eProsima_user_DllExport float point_z() const;

    /*!
     * @brief This function returns a reference to member point_z
     * @return Reference to member point_z
     */
    eProsima_user_DllExport float& point_z();

    /*!
     * @brief This function sets a value in member intensity
     * @param _intensity New value for member intensity
     */
    eProsima_user_DllExport void intensity(
            uint8_t _intensity);

    /*!
     * @brief This function returns the value of member intensity
     * @return Value of member intensity
     */
    eProsima_user_DllExport uint8_t intensity() const;

    /*!
     * @brief This function returns a reference to member intensity
     * @return Reference to member intensity
     */
    eProsima_user_DllExport uint8_t& intensity();

    /*!
     * @brief This function sets a value in member time_stamp
     * @param _time_stamp New value for member time_stamp
     */
    eProsima_user_DllExport void time_stamp(
            uint8_t _time_stamp);

    /*!
     * @brief This function returns the value of member time_stamp
     * @return Value of member time_stamp
     */
    eProsima_user_DllExport uint8_t time_stamp() const;

    /*!
     * @brief This function returns a reference to member time_stamp
     * @return Reference to member time_stamp
     */
    eProsima_user_DllExport uint8_t& time_stamp();

    /*!
     * @brief This function sets a value in member ring
     * @param _ring New value for member ring
     */
    eProsima_user_DllExport void ring(
            uint8_t _ring);

    /*!
     * @brief This function returns the value of member ring
     * @return Value of member ring
     */
    eProsima_user_DllExport uint8_t ring() const;

    /*!
     * @brief This function returns a reference to member ring
     * @return Reference to member ring
     */
    eProsima_user_DllExport uint8_t& ring();


    /*!
     * @brief This function returns the maximum serialized size of an object
     * depending on the buffer alignment.
     * @param current_alignment Buffer alignment.
     * @return Maximum serialized size.
     */
    eProsima_user_DllExport static size_t getMaxCdrSerializedSize(
            size_t current_alignment = 0);

    /*!
     * @brief This function returns the serialized size of a data depending on the buffer alignment.
     * @param data Data which is calculated its serialized size.
     * @param current_alignment Buffer alignment.
     * @return Serialized size.
     */
    eProsima_user_DllExport static size_t getCdrSerializedSize(
            const DDS_LidarPoint& data,
            size_t current_alignment = 0);


    /*!
     * @brief This function serializes an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void serialize(
            eprosima::fastcdr::Cdr& cdr) const;

    /*!
     * @brief This function deserializes an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void deserialize(
            eprosima::fastcdr::Cdr& cdr);



    /*!
     * @brief This function returns the maximum serialized size of the Key of an object
     * depending on the buffer alignment.
     * @param current_alignment Buffer alignment.
     * @return Maximum serialized size.
     */
    eProsima_user_DllExport static size_t getKeyMaxCdrSerializedSize(
            size_t current_alignment = 0);

    /*!
     * @brief This function tells you if the Key has been defined for this type
     */
    eProsima_user_DllExport static bool isKeyDefined();

    /*!
     * @brief This function serializes the key members of an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void serializeKey(
            eprosima::fastcdr::Cdr& cdr) const;

private:

    float m_point_x;
    float m_point_y;
    float m_point_z;
    uint8_t m_intensity;
    uint8_t m_time_stamp;
    uint8_t m_ring;
};
/*!
 * @brief This class represents the structure DDS_LidarCloud defined by the user in the IDL file.
 * @ingroup FUSION_LOCALIZATION
 */
class DDS_LidarCloud
{
public:

    /*!
     * @brief Default constructor.
     */
    eProsima_user_DllExport DDS_LidarCloud();

    /*!
     * @brief Default destructor.
     */
    eProsima_user_DllExport ~DDS_LidarCloud();

    /*!
     * @brief Copy constructor.
     * @param x Reference to the object DDS_LidarCloud that will be copied.
     */
    eProsima_user_DllExport DDS_LidarCloud(
            const DDS_LidarCloud& x);

    /*!
     * @brief Move constructor.
     * @param x Reference to the object DDS_LidarCloud that will be copied.
     */
    eProsima_user_DllExport DDS_LidarCloud(
            DDS_LidarCloud&& x);

    /*!
     * @brief Copy assignment.
     * @param x Reference to the object DDS_LidarCloud that will be copied.
     */
    eProsima_user_DllExport DDS_LidarCloud& operator =(
            const DDS_LidarCloud& x);

    /*!
     * @brief Move assignment.
     * @param x Reference to the object DDS_LidarCloud that will be copied.
     */
    eProsima_user_DllExport DDS_LidarCloud& operator =(
            DDS_LidarCloud&& x);

    /*!
     * @brief This function sets a value in member stamp
     * @param _stamp New value for member stamp
     */
    eProsima_user_DllExport void stamp(
            int64_t _stamp);

    /*!
     * @brief This function returns the value of member stamp
     * @return Value of member stamp
     */
    eProsima_user_DllExport int64_t stamp() const;

    /*!
     * @brief This function returns a reference to member stamp
     * @return Reference to member stamp
     */
    eProsima_user_DllExport int64_t& stamp();

    /*!
     * @brief This function copies the value in member points
     * @param _points New value to be copied in member points
     */
    eProsima_user_DllExport void points(
            const std::vector<DDS_LidarPoint>& _points);

    /*!
     * @brief This function moves the value in member points
     * @param _points New value to be moved in member points
     */
    eProsima_user_DllExport void points(
            std::vector<DDS_LidarPoint>&& _points);

    /*!
     * @brief This function returns a constant reference to member points
     * @return Constant reference to member points
     */
    eProsima_user_DllExport const std::vector<DDS_LidarPoint>& points() const;

    /*!
     * @brief This function returns a reference to member points
     * @return Reference to member points
     */
    eProsima_user_DllExport std::vector<DDS_LidarPoint>& points();

    /*!
     * @brief This function returns the maximum serialized size of an object
     * depending on the buffer alignment.
     * @param current_alignment Buffer alignment.
     * @return Maximum serialized size.
     */
    eProsima_user_DllExport static size_t getMaxCdrSerializedSize(
            size_t current_alignment = 0);

    /*!
     * @brief This function returns the serialized size of a data depending on the buffer alignment.
     * @param data Data which is calculated its serialized size.
     * @param current_alignment Buffer alignment.
     * @return Serialized size.
     */
    eProsima_user_DllExport static size_t getCdrSerializedSize(
            const DDS_LidarCloud& data,
            size_t current_alignment = 0);


    /*!
     * @brief This function serializes an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void serialize(
            eprosima::fastcdr::Cdr& cdr) const;

    /*!
     * @brief This function deserializes an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void deserialize(
            eprosima::fastcdr::Cdr& cdr);



    /*!
     * @brief This function returns the maximum serialized size of the Key of an object
     * depending on the buffer alignment.
     * @param current_alignment Buffer alignment.
     * @return Maximum serialized size.
     */
    eProsima_user_DllExport static size_t getKeyMaxCdrSerializedSize(
            size_t current_alignment = 0);

    /*!
     * @brief This function tells you if the Key has been defined for this type
     */
    eProsima_user_DllExport static bool isKeyDefined();

    /*!
     * @brief This function serializes the key members of an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void serializeKey(
            eprosima::fastcdr::Cdr& cdr) const;

private:

    int64_t m_stamp;
    std::vector<DDS_LidarPoint> m_points;
};
/*!
 * @brief This class represents the structure tmdesc_imu defined by the user in the IDL file.
 * @ingroup FUSION_LOCALIZATION
 */
class tmdesc_imu
{
public:

    /*!
     * @brief Default constructor.
     */
    eProsima_user_DllExport tmdesc_imu();

    /*!
     * @brief Default destructor.
     */
    eProsima_user_DllExport ~tmdesc_imu();

    /*!
     * @brief Copy constructor.
     * @param x Reference to the object tmdesc_imu that will be copied.
     */
    eProsima_user_DllExport tmdesc_imu(
            const tmdesc_imu& x);

    /*!
     * @brief Move constructor.
     * @param x Reference to the object tmdesc_imu that will be copied.
     */
    eProsima_user_DllExport tmdesc_imu(
            tmdesc_imu&& x);

    /*!
     * @brief Copy assignment.
     * @param x Reference to the object tmdesc_imu that will be copied.
     */
    eProsima_user_DllExport tmdesc_imu& operator =(
            const tmdesc_imu& x);

    /*!
     * @brief Move assignment.
     * @param x Reference to the object tmdesc_imu that will be copied.
     */
    eProsima_user_DllExport tmdesc_imu& operator =(
            tmdesc_imu&& x);

    /*!
     * @brief This function sets a value in member tm_sec_imu
     * @param _tm_sec_imu New value for member tm_sec_imu
     */
    eProsima_user_DllExport void tm_sec_imu(
            int16_t _tm_sec_imu);

    /*!
     * @brief This function returns the value of member tm_sec_imu
     * @return Value of member tm_sec_imu
     */
    eProsima_user_DllExport int16_t tm_sec_imu() const;

    /*!
     * @brief This function returns a reference to member tm_sec_imu
     * @return Reference to member tm_sec_imu
     */
    eProsima_user_DllExport int16_t& tm_sec_imu();

    /*!
     * @brief This function sets a value in member tm_min_imu
     * @param _tm_min_imu New value for member tm_min_imu
     */
    eProsima_user_DllExport void tm_min_imu(
            int16_t _tm_min_imu);

    /*!
     * @brief This function returns the value of member tm_min_imu
     * @return Value of member tm_min_imu
     */
    eProsima_user_DllExport int16_t tm_min_imu() const;

    /*!
     * @brief This function returns a reference to member tm_min_imu
     * @return Reference to member tm_min_imu
     */
    eProsima_user_DllExport int16_t& tm_min_imu();

    /*!
     * @brief This function sets a value in member tm_hour_imu
     * @param _tm_hour_imu New value for member tm_hour_imu
     */
    eProsima_user_DllExport void tm_hour_imu(
            int16_t _tm_hour_imu);

    /*!
     * @brief This function returns the value of member tm_hour_imu
     * @return Value of member tm_hour_imu
     */
    eProsima_user_DllExport int16_t tm_hour_imu() const;

    /*!
     * @brief This function returns a reference to member tm_hour_imu
     * @return Reference to member tm_hour_imu
     */
    eProsima_user_DllExport int16_t& tm_hour_imu();

    /*!
     * @brief This function sets a value in member tm_mday_imu
     * @param _tm_mday_imu New value for member tm_mday_imu
     */
    eProsima_user_DllExport void tm_mday_imu(
            int16_t _tm_mday_imu);

    /*!
     * @brief This function returns the value of member tm_mday_imu
     * @return Value of member tm_mday_imu
     */
    eProsima_user_DllExport int16_t tm_mday_imu() const;

    /*!
     * @brief This function returns a reference to member tm_mday_imu
     * @return Reference to member tm_mday_imu
     */
    eProsima_user_DllExport int16_t& tm_mday_imu();

    /*!
     * @brief This function sets a value in member tm_mon_imu
     * @param _tm_mon_imu New value for member tm_mon_imu
     */
    eProsima_user_DllExport void tm_mon_imu(
            int16_t _tm_mon_imu);

    /*!
     * @brief This function returns the value of member tm_mon_imu
     * @return Value of member tm_mon_imu
     */
    eProsima_user_DllExport int16_t tm_mon_imu() const;

    /*!
     * @brief This function returns a reference to member tm_mon_imu
     * @return Reference to member tm_mon_imu
     */
    eProsima_user_DllExport int16_t& tm_mon_imu();

    /*!
     * @brief This function sets a value in member tm_year_imu
     * @param _tm_year_imu New value for member tm_year_imu
     */
    eProsima_user_DllExport void tm_year_imu(
            int16_t _tm_year_imu);

    /*!
     * @brief This function returns the value of member tm_year_imu
     * @return Value of member tm_year_imu
     */
    eProsima_user_DllExport int16_t tm_year_imu() const;

    /*!
     * @brief This function returns a reference to member tm_year_imu
     * @return Reference to member tm_year_imu
     */
    eProsima_user_DllExport int16_t& tm_year_imu();

    /*!
     * @brief This function sets a value in member tm_wday_imu
     * @param _tm_wday_imu New value for member tm_wday_imu
     */
    eProsima_user_DllExport void tm_wday_imu(
            int16_t _tm_wday_imu);

    /*!
     * @brief This function returns the value of member tm_wday_imu
     * @return Value of member tm_wday_imu
     */
    eProsima_user_DllExport int16_t tm_wday_imu() const;

    /*!
     * @brief This function returns a reference to member tm_wday_imu
     * @return Reference to member tm_wday_imu
     */
    eProsima_user_DllExport int16_t& tm_wday_imu();

    /*!
     * @brief This function sets a value in member tm_yday_imu
     * @param _tm_yday_imu New value for member tm_yday_imu
     */
    eProsima_user_DllExport void tm_yday_imu(
            int16_t _tm_yday_imu);

    /*!
     * @brief This function returns the value of member tm_yday_imu
     * @return Value of member tm_yday_imu
     */
    eProsima_user_DllExport int16_t tm_yday_imu() const;

    /*!
     * @brief This function returns a reference to member tm_yday_imu
     * @return Reference to member tm_yday_imu
     */
    eProsima_user_DllExport int16_t& tm_yday_imu();

    /*!
     * @brief This function sets a value in member tm_isdst_imu
     * @param _tm_isdst_imu New value for member tm_isdst_imu
     */
    eProsima_user_DllExport void tm_isdst_imu(
            int16_t _tm_isdst_imu);

    /*!
     * @brief This function returns the value of member tm_isdst_imu
     * @return Value of member tm_isdst_imu
     */
    eProsima_user_DllExport int16_t tm_isdst_imu() const;

    /*!
     * @brief This function returns a reference to member tm_isdst_imu
     * @return Reference to member tm_isdst_imu
     */
    eProsima_user_DllExport int16_t& tm_isdst_imu();

    /*!
     * @brief This function sets a value in member tm_gmtoff_imu
     * @param _tm_gmtoff_imu New value for member tm_gmtoff_imu
     */
    eProsima_user_DllExport void tm_gmtoff_imu(
            int32_t _tm_gmtoff_imu);

    /*!
     * @brief This function returns the value of member tm_gmtoff_imu
     * @return Value of member tm_gmtoff_imu
     */
    eProsima_user_DllExport int32_t tm_gmtoff_imu() const;

    /*!
     * @brief This function returns a reference to member tm_gmtoff_imu
     * @return Reference to member tm_gmtoff_imu
     */
    eProsima_user_DllExport int32_t& tm_gmtoff_imu();

    /*!
     * @brief This function copies the value in member tm_zone_imu
     * @param _tm_zone_imu New value to be copied in member tm_zone_imu
     */
    eProsima_user_DllExport void tm_zone_imu(
            const std::array<char, 20>& _tm_zone_imu);

    /*!
     * @brief This function moves the value in member tm_zone_imu
     * @param _tm_zone_imu New value to be moved in member tm_zone_imu
     */
    eProsima_user_DllExport void tm_zone_imu(
            std::array<char, 20>&& _tm_zone_imu);

    /*!
     * @brief This function returns a constant reference to member tm_zone_imu
     * @return Constant reference to member tm_zone_imu
     */
    eProsima_user_DllExport const std::array<char, 20>& tm_zone_imu() const;

    /*!
     * @brief This function returns a reference to member tm_zone_imu
     * @return Reference to member tm_zone_imu
     */
    eProsima_user_DllExport std::array<char, 20>& tm_zone_imu();

    /*!
     * @brief This function returns the maximum serialized size of an object
     * depending on the buffer alignment.
     * @param current_alignment Buffer alignment.
     * @return Maximum serialized size.
     */
    eProsima_user_DllExport static size_t getMaxCdrSerializedSize(
            size_t current_alignment = 0);

    /*!
     * @brief This function returns the serialized size of a data depending on the buffer alignment.
     * @param data Data which is calculated its serialized size.
     * @param current_alignment Buffer alignment.
     * @return Serialized size.
     */
    eProsima_user_DllExport static size_t getCdrSerializedSize(
            const tmdesc_imu& data,
            size_t current_alignment = 0);


    /*!
     * @brief This function serializes an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void serialize(
            eprosima::fastcdr::Cdr& cdr) const;

    /*!
     * @brief This function deserializes an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void deserialize(
            eprosima::fastcdr::Cdr& cdr);



    /*!
     * @brief This function returns the maximum serialized size of the Key of an object
     * depending on the buffer alignment.
     * @param current_alignment Buffer alignment.
     * @return Maximum serialized size.
     */
    eProsima_user_DllExport static size_t getKeyMaxCdrSerializedSize(
            size_t current_alignment = 0);

    /*!
     * @brief This function tells you if the Key has been defined for this type
     */
    eProsima_user_DllExport static bool isKeyDefined();

    /*!
     * @brief This function serializes the key members of an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void serializeKey(
            eprosima::fastcdr::Cdr& cdr) const;

private:

    int16_t m_tm_sec_imu;
    int16_t m_tm_min_imu;
    int16_t m_tm_hour_imu;
    int16_t m_tm_mday_imu;
    int16_t m_tm_mon_imu;
    int16_t m_tm_year_imu;
    int16_t m_tm_wday_imu;
    int16_t m_tm_yday_imu;
    int16_t m_tm_isdst_imu;
    int32_t m_tm_gmtoff_imu;
    std::array<char, 20> m_tm_zone_imu;
};
/*!
 * @brief This class represents the structure tmdesc defined by the user in the IDL file.
 * @ingroup FUSION_LOCALIZATION
 */
class tmdesc
{
public:

    /*!
     * @brief Default constructor.
     */
    eProsima_user_DllExport tmdesc();

    /*!
     * @brief Default destructor.
     */
    eProsima_user_DllExport ~tmdesc();

    /*!
     * @brief Copy constructor.
     * @param x Reference to the object tmdesc that will be copied.
     */
    eProsima_user_DllExport tmdesc(
            const tmdesc& x);

    /*!
     * @brief Move constructor.
     * @param x Reference to the object tmdesc that will be copied.
     */
    eProsima_user_DllExport tmdesc(
            tmdesc&& x);

    /*!
     * @brief Copy assignment.
     * @param x Reference to the object tmdesc that will be copied.
     */
    eProsima_user_DllExport tmdesc& operator =(
            const tmdesc& x);

    /*!
     * @brief Move assignment.
     * @param x Reference to the object tmdesc that will be copied.
     */
    eProsima_user_DllExport tmdesc& operator =(
            tmdesc&& x);

    /*!
     * @brief This function sets a value in member tm_sec
     * @param _tm_sec New value for member tm_sec
     */
    eProsima_user_DllExport void tm_sec(
            int16_t _tm_sec);

    /*!
     * @brief This function returns the value of member tm_sec
     * @return Value of member tm_sec
     */
    eProsima_user_DllExport int16_t tm_sec() const;

    /*!
     * @brief This function returns a reference to member tm_sec
     * @return Reference to member tm_sec
     */
    eProsima_user_DllExport int16_t& tm_sec();

    /*!
     * @brief This function sets a value in member tm_min
     * @param _tm_min New value for member tm_min
     */
    eProsima_user_DllExport void tm_min(
            int16_t _tm_min);

    /*!
     * @brief This function returns the value of member tm_min
     * @return Value of member tm_min
     */
    eProsima_user_DllExport int16_t tm_min() const;

    /*!
     * @brief This function returns a reference to member tm_min
     * @return Reference to member tm_min
     */
    eProsima_user_DllExport int16_t& tm_min();

    /*!
     * @brief This function sets a value in member tm_hour
     * @param _tm_hour New value for member tm_hour
     */
    eProsima_user_DllExport void tm_hour(
            int16_t _tm_hour);

    /*!
     * @brief This function returns the value of member tm_hour
     * @return Value of member tm_hour
     */
    eProsima_user_DllExport int16_t tm_hour() const;

    /*!
     * @brief This function returns a reference to member tm_hour
     * @return Reference to member tm_hour
     */
    eProsima_user_DllExport int16_t& tm_hour();

    /*!
     * @brief This function sets a value in member tm_mday
     * @param _tm_mday New value for member tm_mday
     */
    eProsima_user_DllExport void tm_mday(
            int16_t _tm_mday);

    /*!
     * @brief This function returns the value of member tm_mday
     * @return Value of member tm_mday
     */
    eProsima_user_DllExport int16_t tm_mday() const;

    /*!
     * @brief This function returns a reference to member tm_mday
     * @return Reference to member tm_mday
     */
    eProsima_user_DllExport int16_t& tm_mday();

    /*!
     * @brief This function sets a value in member tm_mon
     * @param _tm_mon New value for member tm_mon
     */
    eProsima_user_DllExport void tm_mon(
            int16_t _tm_mon);

    /*!
     * @brief This function returns the value of member tm_mon
     * @return Value of member tm_mon
     */
    eProsima_user_DllExport int16_t tm_mon() const;

    /*!
     * @brief This function returns a reference to member tm_mon
     * @return Reference to member tm_mon
     */
    eProsima_user_DllExport int16_t& tm_mon();

    /*!
     * @brief This function sets a value in member tm_year
     * @param _tm_year New value for member tm_year
     */
    eProsima_user_DllExport void tm_year(
            int16_t _tm_year);

    /*!
     * @brief This function returns the value of member tm_year
     * @return Value of member tm_year
     */
    eProsima_user_DllExport int16_t tm_year() const;

    /*!
     * @brief This function returns a reference to member tm_year
     * @return Reference to member tm_year
     */
    eProsima_user_DllExport int16_t& tm_year();

    /*!
     * @brief This function sets a value in member tm_wday
     * @param _tm_wday New value for member tm_wday
     */
    eProsima_user_DllExport void tm_wday(
            int16_t _tm_wday);

    /*!
     * @brief This function returns the value of member tm_wday
     * @return Value of member tm_wday
     */
    eProsima_user_DllExport int16_t tm_wday() const;

    /*!
     * @brief This function returns a reference to member tm_wday
     * @return Reference to member tm_wday
     */
    eProsima_user_DllExport int16_t& tm_wday();

    /*!
     * @brief This function sets a value in member tm_yday
     * @param _tm_yday New value for member tm_yday
     */
    eProsima_user_DllExport void tm_yday(
            int16_t _tm_yday);

    /*!
     * @brief This function returns the value of member tm_yday
     * @return Value of member tm_yday
     */
    eProsima_user_DllExport int16_t tm_yday() const;

    /*!
     * @brief This function returns a reference to member tm_yday
     * @return Reference to member tm_yday
     */
    eProsima_user_DllExport int16_t& tm_yday();

    /*!
     * @brief This function sets a value in member tm_isdst
     * @param _tm_isdst New value for member tm_isdst
     */
    eProsima_user_DllExport void tm_isdst(
            int16_t _tm_isdst);

    /*!
     * @brief This function returns the value of member tm_isdst
     * @return Value of member tm_isdst
     */
    eProsima_user_DllExport int16_t tm_isdst() const;

    /*!
     * @brief This function returns a reference to member tm_isdst
     * @return Reference to member tm_isdst
     */
    eProsima_user_DllExport int16_t& tm_isdst();

    /*!
     * @brief This function sets a value in member tm_gmtoff
     * @param _tm_gmtoff New value for member tm_gmtoff
     */
    eProsima_user_DllExport void tm_gmtoff(
            int32_t _tm_gmtoff);

    /*!
     * @brief This function returns the value of member tm_gmtoff
     * @return Value of member tm_gmtoff
     */
    eProsima_user_DllExport int32_t tm_gmtoff() const;

    /*!
     * @brief This function returns a reference to member tm_gmtoff
     * @return Reference to member tm_gmtoff
     */
    eProsima_user_DllExport int32_t& tm_gmtoff();

    /*!
     * @brief This function copies the value in member tm_zone
     * @param _tm_zone New value to be copied in member tm_zone
     */
    eProsima_user_DllExport void tm_zone(
            const std::array<char, 20>& _tm_zone);

    /*!
     * @brief This function moves the value in member tm_zone
     * @param _tm_zone New value to be moved in member tm_zone
     */
    eProsima_user_DllExport void tm_zone(
            std::array<char, 20>&& _tm_zone);

    /*!
     * @brief This function returns a constant reference to member tm_zone
     * @return Constant reference to member tm_zone
     */
    eProsima_user_DllExport const std::array<char, 20>& tm_zone() const;

    /*!
     * @brief This function returns a reference to member tm_zone
     * @return Reference to member tm_zone
     */
    eProsima_user_DllExport std::array<char, 20>& tm_zone();

    /*!
     * @brief This function returns the maximum serialized size of an object
     * depending on the buffer alignment.
     * @param current_alignment Buffer alignment.
     * @return Maximum serialized size.
     */
    eProsima_user_DllExport static size_t getMaxCdrSerializedSize(
            size_t current_alignment = 0);

    /*!
     * @brief This function returns the serialized size of a data depending on the buffer alignment.
     * @param data Data which is calculated its serialized size.
     * @param current_alignment Buffer alignment.
     * @return Serialized size.
     */
    eProsima_user_DllExport static size_t getCdrSerializedSize(
            const tmdesc& data,
            size_t current_alignment = 0);


    /*!
     * @brief This function serializes an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void serialize(
            eprosima::fastcdr::Cdr& cdr) const;

    /*!
     * @brief This function deserializes an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void deserialize(
            eprosima::fastcdr::Cdr& cdr);



    /*!
     * @brief This function returns the maximum serialized size of the Key of an object
     * depending on the buffer alignment.
     * @param current_alignment Buffer alignment.
     * @return Maximum serialized size.
     */
    eProsima_user_DllExport static size_t getKeyMaxCdrSerializedSize(
            size_t current_alignment = 0);

    /*!
     * @brief This function tells you if the Key has been defined for this type
     */
    eProsima_user_DllExport static bool isKeyDefined();

    /*!
     * @brief This function serializes the key members of an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void serializeKey(
            eprosima::fastcdr::Cdr& cdr) const;

private:

    int16_t m_tm_sec;
    int16_t m_tm_min;
    int16_t m_tm_hour;
    int16_t m_tm_mday;
    int16_t m_tm_mon;
    int16_t m_tm_year;
    int16_t m_tm_wday;
    int16_t m_tm_yday;
    int16_t m_tm_isdst;
    int32_t m_tm_gmtoff;
    std::array<char, 20> m_tm_zone;
};
/*!
 * @brief This class represents the structure GpsImuInfo defined by the user in the IDL file.
 * @ingroup FUSION_LOCALIZATION
 */
class GpsImuInfo
{
public:

    /*!
     * @brief Default constructor.
     */
    eProsima_user_DllExport GpsImuInfo();

    /*!
     * @brief Default destructor.
     */
    eProsima_user_DllExport ~GpsImuInfo();

    /*!
     * @brief Copy constructor.
     * @param x Reference to the object GpsImuInfo that will be copied.
     */
    eProsima_user_DllExport GpsImuInfo(
            const GpsImuInfo& x);

    /*!
     * @brief Move constructor.
     * @param x Reference to the object GpsImuInfo that will be copied.
     */
    eProsima_user_DllExport GpsImuInfo(
            GpsImuInfo&& x);

    /*!
     * @brief Copy assignment.
     * @param x Reference to the object GpsImuInfo that will be copied.
     */
    eProsima_user_DllExport GpsImuInfo& operator =(
            const GpsImuInfo& x);

    /*!
     * @brief Move assignment.
     * @param x Reference to the object GpsImuInfo that will be copied.
     */
    eProsima_user_DllExport GpsImuInfo& operator =(
            GpsImuInfo&& x);

    /*!
     * @brief This function sets a value in member gps_week
     * @param _gps_week New value for member gps_week
     */
    eProsima_user_DllExport void gps_week(
            int32_t _gps_week);

    /*!
     * @brief This function returns the value of member gps_week
     * @return Value of member gps_week
     */
    eProsima_user_DllExport int32_t gps_week() const;

    /*!
     * @brief This function returns a reference to member gps_week
     * @return Reference to member gps_week
     */
    eProsima_user_DllExport int32_t& gps_week();

    /*!
     * @brief This function sets a value in member gps_time
     * @param _gps_time New value for member gps_time
     */
    eProsima_user_DllExport void gps_time(
            float _gps_time);

    /*!
     * @brief This function returns the value of member gps_time
     * @return Value of member gps_time
     */
    eProsima_user_DllExport float gps_time() const;

    /*!
     * @brief This function returns a reference to member gps_time
     * @return Reference to member gps_time
     */
    eProsima_user_DllExport float& gps_time();

    /*!
     * @brief This function copies the value in member time_record
     * @param _time_record New value to be copied in member time_record
     */
    eProsima_user_DllExport void time_record(
            const tmdesc& _time_record);

    /*!
     * @brief This function moves the value in member time_record
     * @param _time_record New value to be moved in member time_record
     */
    eProsima_user_DllExport void time_record(
            tmdesc&& _time_record);

    /*!
     * @brief This function returns a constant reference to member time_record
     * @return Constant reference to member time_record
     */
    eProsima_user_DllExport const tmdesc& time_record() const;

    /*!
     * @brief This function returns a reference to member time_record
     * @return Reference to member time_record
     */
    eProsima_user_DllExport tmdesc& time_record();
    /*!
     * @brief This function sets a value in member time_year
     * @param _time_year New value for member time_year
     */
    eProsima_user_DllExport void time_year(
            float _time_year);

    /*!
     * @brief This function returns the value of member time_year
     * @return Value of member time_year
     */
    eProsima_user_DllExport float time_year() const;

    /*!
     * @brief This function returns a reference to member time_year
     * @return Reference to member time_year
     */
    eProsima_user_DllExport float& time_year();

    /*!
     * @brief This function sets a value in member time_month
     * @param _time_month New value for member time_month
     */
    eProsima_user_DllExport void time_month(
            uint32_t _time_month);

    /*!
     * @brief This function returns the value of member time_month
     * @return Value of member time_month
     */
    eProsima_user_DllExport uint32_t time_month() const;

    /*!
     * @brief This function returns a reference to member time_month
     * @return Reference to member time_month
     */
    eProsima_user_DllExport uint32_t& time_month();

    /*!
     * @brief This function sets a value in member time_day
     * @param _time_day New value for member time_day
     */
    eProsima_user_DllExport void time_day(
            uint32_t _time_day);

    /*!
     * @brief This function returns the value of member time_day
     * @return Value of member time_day
     */
    eProsima_user_DllExport uint32_t time_day() const;

    /*!
     * @brief This function returns a reference to member time_day
     * @return Reference to member time_day
     */
    eProsima_user_DllExport uint32_t& time_day();

    /*!
     * @brief This function sets a value in member time_hour
     * @param _time_hour New value for member time_hour
     */
    eProsima_user_DllExport void time_hour(
            uint32_t _time_hour);

    /*!
     * @brief This function returns the value of member time_hour
     * @return Value of member time_hour
     */
    eProsima_user_DllExport uint32_t time_hour() const;

    /*!
     * @brief This function returns a reference to member time_hour
     * @return Reference to member time_hour
     */
    eProsima_user_DllExport uint32_t& time_hour();

    /*!
     * @brief This function sets a value in member time_minute
     * @param _time_minute New value for member time_minute
     */
    eProsima_user_DllExport void time_minute(
            uint32_t _time_minute);

    /*!
     * @brief This function returns the value of member time_minute
     * @return Value of member time_minute
     */
    eProsima_user_DllExport uint32_t time_minute() const;

    /*!
     * @brief This function returns a reference to member time_minute
     * @return Reference to member time_minute
     */
    eProsima_user_DllExport uint32_t& time_minute();

    /*!
     * @brief This function sets a value in member time_second
     * @param _time_second New value for member time_second
     */
    eProsima_user_DllExport void time_second(
            uint32_t _time_second);

    /*!
     * @brief This function returns the value of member time_second
     * @return Value of member time_second
     */
    eProsima_user_DllExport uint32_t time_second() const;

    /*!
     * @brief This function returns a reference to member time_second
     * @return Reference to member time_second
     */
    eProsima_user_DllExport uint32_t& time_second();

    /*!
     * @brief This function sets a value in member gps_msec
     * @param _gps_msec New value for member gps_msec
     */
    eProsima_user_DllExport void gps_msec(
            uint64_t _gps_msec);

    /*!
     * @brief This function returns the value of member gps_msec
     * @return Value of member gps_msec
     */
    eProsima_user_DllExport uint64_t gps_msec() const;

    /*!
     * @brief This function returns a reference to member gps_msec
     * @return Reference to member gps_msec
     */
    eProsima_user_DllExport uint64_t& gps_msec();

    /*!
     * @brief This function sets a value in member gps_rtk_status
     * @param _gps_rtk_status New value for member gps_rtk_status
     */
    eProsima_user_DllExport void gps_rtk_status(
            int32_t _gps_rtk_status);

    /*!
     * @brief This function returns the value of member gps_rtk_status
     * @return Value of member gps_rtk_status
     */
    eProsima_user_DllExport int32_t gps_rtk_status() const;

    /*!
     * @brief This function returns a reference to member gps_rtk_status
     * @return Reference to member gps_rtk_status
     */
    eProsima_user_DllExport int32_t& gps_rtk_status();

    /*!
     * @brief This function sets a value in member gps_lat
     * @param _gps_lat New value for member gps_lat
     */
    eProsima_user_DllExport void gps_lat(
            double _gps_lat);

    /*!
     * @brief This function returns the value of member gps_lat
     * @return Value of member gps_lat
     */
    eProsima_user_DllExport double gps_lat() const;

    /*!
     * @brief This function returns a reference to member gps_lat
     * @return Reference to member gps_lat
     */
    eProsima_user_DllExport double& gps_lat();

    /*!
     * @brief This function sets a value in member gps_lng
     * @param _gps_lng New value for member gps_lng
     */
    eProsima_user_DllExport void gps_lng(
            double _gps_lng);

    /*!
     * @brief This function returns the value of member gps_lng
     * @return Value of member gps_lng
     */
    eProsima_user_DllExport double gps_lng() const;

    /*!
     * @brief This function returns a reference to member gps_lng
     * @return Reference to member gps_lng
     */
    eProsima_user_DllExport double& gps_lng();

    /*!
     * @brief This function sets a value in member gps_heading
     * @param _gps_heading New value for member gps_heading
     */
    eProsima_user_DllExport void gps_heading(
            float _gps_heading);

    /*!
     * @brief This function returns the value of member gps_heading
     * @return Value of member gps_heading
     */
    eProsima_user_DllExport float gps_heading() const;

    /*!
     * @brief This function returns a reference to member gps_heading
     * @return Reference to member gps_heading
     */
    eProsima_user_DllExport float& gps_heading();

    /*!
     * @brief This function sets a value in member gps_ve
     * @param _gps_ve New value for member gps_ve
     */
    eProsima_user_DllExport void gps_ve(
            float _gps_ve);

    /*!
     * @brief This function returns the value of member gps_ve
     * @return Value of member gps_ve
     */
    eProsima_user_DllExport float gps_ve() const;

    /*!
     * @brief This function returns a reference to member gps_ve
     * @return Reference to member gps_ve
     */
    eProsima_user_DllExport float& gps_ve();

    /*!
     * @brief This function sets a value in member gps_vn
     * @param _gps_vn New value for member gps_vn
     */
    eProsima_user_DllExport void gps_vn(
            float _gps_vn);

    /*!
     * @brief This function returns the value of member gps_vn
     * @return Value of member gps_vn
     */
    eProsima_user_DllExport float gps_vn() const;

    /*!
     * @brief This function returns a reference to member gps_vn
     * @return Reference to member gps_vn
     */
    eProsima_user_DllExport float& gps_vn();

    /*!
     * @brief This function sets a value in member gps_vd
     * @param _gps_vd New value for member gps_vd
     */
    eProsima_user_DllExport void gps_vd(
            float _gps_vd);

    /*!
     * @brief This function returns the value of member gps_vd
     * @return Value of member gps_vd
     */
    eProsima_user_DllExport float gps_vd() const;

    /*!
     * @brief This function returns a reference to member gps_vd
     * @return Reference to member gps_vd
     */
    eProsima_user_DllExport float& gps_vd();

    /*!
     * @brief This function sets a value in member gps_speed
     * @param _gps_speed New value for member gps_speed
     */
    eProsima_user_DllExport void gps_speed(
            float _gps_speed);

    /*!
     * @brief This function returns the value of member gps_speed
     * @return Value of member gps_speed
     */
    eProsima_user_DllExport float gps_speed() const;

    /*!
     * @brief This function returns a reference to member gps_speed
     * @return Reference to member gps_speed
     */
    eProsima_user_DllExport float& gps_speed();

    /*!
     * @brief This function sets a value in member gps_days_to_speed
     * @param _gps_days_to_speed New value for member gps_days_to_speed
     */
    eProsima_user_DllExport void gps_days_to_speed(
            float _gps_days_to_speed);

    /*!
     * @brief This function returns the value of member gps_days_to_speed
     * @return Value of member gps_days_to_speed
     */
    eProsima_user_DllExport float gps_days_to_speed() const;

    /*!
     * @brief This function returns a reference to member gps_days_to_speed
     * @return Reference to member gps_days_to_speed
     */
    eProsima_user_DllExport float& gps_days_to_speed();

    /*!
     * @brief This function sets a value in member gps_height
     * @param _gps_height New value for member gps_height
     */
    eProsima_user_DllExport void gps_height(
            float _gps_height);

    /*!
     * @brief This function returns the value of member gps_height
     * @return Value of member gps_height
     */
    eProsima_user_DllExport float gps_height() const;

    /*!
     * @brief This function returns a reference to member gps_height
     * @return Reference to member gps_height
     */
    eProsima_user_DllExport float& gps_height();

    /*!
     * @brief This function sets a value in member imu_acc_y
     * @param _imu_acc_y New value for member imu_acc_y
     */
    eProsima_user_DllExport void imu_acc_y(
            float _imu_acc_y);

    /*!
     * @brief This function returns the value of member imu_acc_y
     * @return Value of member imu_acc_y
     */
    eProsima_user_DllExport float imu_acc_y() const;

    /*!
     * @brief This function returns a reference to member imu_acc_y
     * @return Reference to member imu_acc_y
     */
    eProsima_user_DllExport float& imu_acc_y();

    /*!
     * @brief This function sets a value in member imu_acc_x
     * @param _imu_acc_x New value for member imu_acc_x
     */
    eProsima_user_DllExport void imu_acc_x(
            float _imu_acc_x);

    /*!
     * @brief This function returns the value of member imu_acc_x
     * @return Value of member imu_acc_x
     */
    eProsima_user_DllExport float imu_acc_x() const;

    /*!
     * @brief This function returns a reference to member imu_acc_x
     * @return Reference to member imu_acc_x
     */
    eProsima_user_DllExport float& imu_acc_x();

    /*!
     * @brief This function sets a value in member imu_yaw_z
     * @param _imu_yaw_z New value for member imu_yaw_z
     */
    eProsima_user_DllExport void imu_yaw_z(
            float _imu_yaw_z);

    /*!
     * @brief This function returns the value of member imu_yaw_z
     * @return Value of member imu_yaw_z
     */
    eProsima_user_DllExport float imu_yaw_z() const;

    /*!
     * @brief This function returns a reference to member imu_yaw_z
     * @return Reference to member imu_yaw_z
     */
    eProsima_user_DllExport float& imu_yaw_z();

    /*!
     * @brief This function sets a value in member imu_v_y
     * @param _imu_v_y New value for member imu_v_y
     */
    eProsima_user_DllExport void imu_v_y(
            float _imu_v_y);

    /*!
     * @brief This function returns the value of member imu_v_y
     * @return Value of member imu_v_y
     */
    eProsima_user_DllExport float imu_v_y() const;

    /*!
     * @brief This function returns a reference to member imu_v_y
     * @return Reference to member imu_v_y
     */
    eProsima_user_DllExport float& imu_v_y();

    /*!
     * @brief This function sets a value in member imu_v_x
     * @param _imu_v_x New value for member imu_v_x
     */
    eProsima_user_DllExport void imu_v_x(
            float _imu_v_x);

    /*!
     * @brief This function returns the value of member imu_v_x
     * @return Value of member imu_v_x
     */
    eProsima_user_DllExport float imu_v_x() const;

    /*!
     * @brief This function returns a reference to member imu_v_x
     * @return Reference to member imu_v_x
     */
    eProsima_user_DllExport float& imu_v_x();

    /*!
     * @brief This function sets a value in member imu_v_z
     * @param _imu_v_z New value for member imu_v_z
     */
    eProsima_user_DllExport void imu_v_z(
            float _imu_v_z);

    /*!
     * @brief This function returns the value of member imu_v_z
     * @return Value of member imu_v_z
     */
    eProsima_user_DllExport float imu_v_z() const;

    /*!
     * @brief This function returns a reference to member imu_v_z
     * @return Reference to member imu_v_z
     */
    eProsima_user_DllExport float& imu_v_z();

    /*!
     * @brief This function sets a value in member gps_satellite_front
     * @param _gps_satellite_front New value for member gps_satellite_front
     */
    eProsima_user_DllExport void gps_satellite_front(
            int32_t _gps_satellite_front);

    /*!
     * @brief This function returns the value of member gps_satellite_front
     * @return Value of member gps_satellite_front
     */
    eProsima_user_DllExport int32_t gps_satellite_front() const;

    /*!
     * @brief This function returns a reference to member gps_satellite_front
     * @return Reference to member gps_satellite_front
     */
    eProsima_user_DllExport int32_t& gps_satellite_front();

    /*!
     * @brief This function sets a value in member gps_satellite_rear
     * @param _gps_satellite_rear New value for member gps_satellite_rear
     */
    eProsima_user_DllExport void gps_satellite_rear(
            int32_t _gps_satellite_rear);

    /*!
     * @brief This function returns the value of member gps_satellite_rear
     * @return Value of member gps_satellite_rear
     */
    eProsima_user_DllExport int32_t gps_satellite_rear() const;

    /*!
     * @brief This function returns a reference to member gps_satellite_rear
     * @return Reference to member gps_satellite_rear
     */
    eProsima_user_DllExport int32_t& gps_satellite_rear();

    /*!
     * @brief This function sets a value in member gps_yaw
     * @param _gps_yaw New value for member gps_yaw
     */
    eProsima_user_DllExport void gps_yaw(
            float _gps_yaw);

    /*!
     * @brief This function returns the value of member gps_yaw
     * @return Value of member gps_yaw
     */
    eProsima_user_DllExport float gps_yaw() const;

    /*!
     * @brief This function returns a reference to member gps_yaw
     * @return Reference to member gps_yaw
     */
    eProsima_user_DllExport float& gps_yaw();

    /*!
     * @brief This function sets a value in member gps_roll
     * @param _gps_roll New value for member gps_roll
     */
    eProsima_user_DllExport void gps_roll(
            float _gps_roll);

    /*!
     * @brief This function returns the value of member gps_roll
     * @return Value of member gps_roll
     */
    eProsima_user_DllExport float gps_roll() const;

    /*!
     * @brief This function returns a reference to member gps_roll
     * @return Reference to member gps_roll
     */
    eProsima_user_DllExport float& gps_roll();

    /*!
     * @brief This function sets a value in member gps_pitch
     * @param _gps_pitch New value for member gps_pitch
     */
    eProsima_user_DllExport void gps_pitch(
            float _gps_pitch);

    /*!
     * @brief This function returns the value of member gps_pitch
     * @return Value of member gps_pitch
     */
    eProsima_user_DllExport float gps_pitch() const;

    /*!
     * @brief This function returns a reference to member gps_pitch
     * @return Reference to member gps_pitch
     */
    eProsima_user_DllExport float& gps_pitch();


    /*!
     * @brief This function returns the maximum serialized size of an object
     * depending on the buffer alignment.
     * @param current_alignment Buffer alignment.
     * @return Maximum serialized size.
     */
    eProsima_user_DllExport static size_t getMaxCdrSerializedSize(
            size_t current_alignment = 0);

    /*!
     * @brief This function returns the serialized size of a data depending on the buffer alignment.
     * @param data Data which is calculated its serialized size.
     * @param current_alignment Buffer alignment.
     * @return Serialized size.
     */
    eProsima_user_DllExport static size_t getCdrSerializedSize(
            const GpsImuInfo& data,
            size_t current_alignment = 0);


    /*!
     * @brief This function serializes an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void serialize(
            eprosima::fastcdr::Cdr& cdr) const;

    /*!
     * @brief This function deserializes an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void deserialize(
            eprosima::fastcdr::Cdr& cdr);



    /*!
     * @brief This function returns the maximum serialized size of the Key of an object
     * depending on the buffer alignment.
     * @param current_alignment Buffer alignment.
     * @return Maximum serialized size.
     */
    eProsima_user_DllExport static size_t getKeyMaxCdrSerializedSize(
            size_t current_alignment = 0);

    /*!
     * @brief This function tells you if the Key has been defined for this type
     */
    eProsima_user_DllExport static bool isKeyDefined();

    /*!
     * @brief This function serializes the key members of an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void serializeKey(
            eprosima::fastcdr::Cdr& cdr) const;

private:

    int32_t m_gps_week;
    float m_gps_time;
    tmdesc m_time_record;
    float m_time_year;
    uint32_t m_time_month;
    uint32_t m_time_day;
    uint32_t m_time_hour;
    uint32_t m_time_minute;
    uint32_t m_time_second;
    uint64_t m_gps_msec;
    int32_t m_gps_rtk_status;
    double m_gps_lat;
    double m_gps_lng;
    float m_gps_heading;
    float m_gps_ve;
    float m_gps_vn;
    float m_gps_vd;
    float m_gps_speed;
    float m_gps_days_to_speed;
    float m_gps_height;
    float m_imu_acc_y;
    float m_imu_acc_x;
    float m_imu_yaw_z;
    float m_imu_v_y;
    float m_imu_v_x;
    float m_imu_v_z;
    int32_t m_gps_satellite_front;
    int32_t m_gps_satellite_rear;
    float m_gps_yaw;
    float m_gps_roll;
    float m_gps_pitch;
};
/*!
 * @brief This class represents the structure DDS_GpsImuInfo defined by the user in the IDL file.
 * @ingroup FUSION_LOCALIZATION
 */
class DDS_GpsImuInfo
{
public:

    /*!
     * @brief Default constructor.
     */
    eProsima_user_DllExport DDS_GpsImuInfo();

    /*!
     * @brief Default destructor.
     */
    eProsima_user_DllExport ~DDS_GpsImuInfo();

    /*!
     * @brief Copy constructor.
     * @param x Reference to the object DDS_GpsImuInfo that will be copied.
     */
    eProsima_user_DllExport DDS_GpsImuInfo(
            const DDS_GpsImuInfo& x);

    /*!
     * @brief Move constructor.
     * @param x Reference to the object DDS_GpsImuInfo that will be copied.
     */
    eProsima_user_DllExport DDS_GpsImuInfo(
            DDS_GpsImuInfo&& x);

    /*!
     * @brief Copy assignment.
     * @param x Reference to the object DDS_GpsImuInfo that will be copied.
     */
    eProsima_user_DllExport DDS_GpsImuInfo& operator =(
            const DDS_GpsImuInfo& x);

    /*!
     * @brief Move assignment.
     * @param x Reference to the object DDS_GpsImuInfo that will be copied.
     */
    eProsima_user_DllExport DDS_GpsImuInfo& operator =(
            DDS_GpsImuInfo&& x);

    /*!
     * @brief This function sets a value in member stamp
     * @param _stamp New value for member stamp
     */
    eProsima_user_DllExport void stamp(
            int64_t _stamp);

    /*!
     * @brief This function returns the value of member stamp
     * @return Value of member stamp
     */
    eProsima_user_DllExport int64_t stamp() const;

    /*!
     * @brief This function returns a reference to member stamp
     * @return Reference to member stamp
     */
    eProsima_user_DllExport int64_t& stamp();

    /*!
     * @brief This function sets a value in member gps_week_10ms
     * @param _gps_week_10ms New value for member gps_week_10ms
     */
    eProsima_user_DllExport void gps_week_10ms(
            int32_t _gps_week_10ms);

    /*!
     * @brief This function returns the value of member gps_week_10ms
     * @return Value of member gps_week_10ms
     */
    eProsima_user_DllExport int32_t gps_week_10ms() const;

    /*!
     * @brief This function returns a reference to member gps_week_10ms
     * @return Reference to member gps_week_10ms
     */
    eProsima_user_DllExport int32_t& gps_week_10ms();

    /*!
     * @brief This function sets a value in member gps_time_10ms
     * @param _gps_time_10ms New value for member gps_time_10ms
     */
    eProsima_user_DllExport void gps_time_10ms(
            float _gps_time_10ms);

    /*!
     * @brief This function returns the value of member gps_time_10ms
     * @return Value of member gps_time_10ms
     */
    eProsima_user_DllExport float gps_time_10ms() const;

    /*!
     * @brief This function returns a reference to member gps_time_10ms
     * @return Reference to member gps_time_10ms
     */
    eProsima_user_DllExport float& gps_time_10ms();

    /*!
     * @brief This function sets a value in member time_year_10ms
     * @param _time_year_10ms New value for member time_year_10ms
     */
    eProsima_user_DllExport void time_year_10ms(
            float _time_year_10ms);

    /*!
     * @brief This function returns the value of member time_year_10ms
     * @return Value of member time_year_10ms
     */
    eProsima_user_DllExport float time_year_10ms() const;

    /*!
     * @brief This function returns a reference to member time_year_10ms
     * @return Reference to member time_year_10ms
     */
    eProsima_user_DllExport float& time_year_10ms();

    /*!
     * @brief This function copies the value in member time_record_10ms
     * @param _time_record_10ms New value to be copied in member time_record_10ms
     */
    eProsima_user_DllExport void time_record_10ms(
            const tmdesc_imu& _time_record_10ms);

    /*!
     * @brief This function moves the value in member time_record_10ms
     * @param _time_record_10ms New value to be moved in member time_record_10ms
     */
    eProsima_user_DllExport void time_record_10ms(
            tmdesc_imu&& _time_record_10ms);

    /*!
     * @brief This function returns a constant reference to member time_record_10ms
     * @return Constant reference to member time_record_10ms
     */
    eProsima_user_DllExport const tmdesc_imu& time_record_10ms() const;

    /*!
     * @brief This function returns a reference to member time_record_10ms
     * @return Reference to member time_record_10ms
     */
    eProsima_user_DllExport tmdesc_imu& time_record_10ms();
    /*!
     * @brief This function sets a value in member time_month_10ms
     * @param _time_month_10ms New value for member time_month_10ms
     */
    eProsima_user_DllExport void time_month_10ms(
            uint32_t _time_month_10ms);

    /*!
     * @brief This function returns the value of member time_month_10ms
     * @return Value of member time_month_10ms
     */
    eProsima_user_DllExport uint32_t time_month_10ms() const;

    /*!
     * @brief This function returns a reference to member time_month_10ms
     * @return Reference to member time_month_10ms
     */
    eProsima_user_DllExport uint32_t& time_month_10ms();

    /*!
     * @brief This function sets a value in member time_day_10ms
     * @param _time_day_10ms New value for member time_day_10ms
     */
    eProsima_user_DllExport void time_day_10ms(
            uint32_t _time_day_10ms);

    /*!
     * @brief This function returns the value of member time_day_10ms
     * @return Value of member time_day_10ms
     */
    eProsima_user_DllExport uint32_t time_day_10ms() const;

    /*!
     * @brief This function returns a reference to member time_day_10ms
     * @return Reference to member time_day_10ms
     */
    eProsima_user_DllExport uint32_t& time_day_10ms();

    /*!
     * @brief This function sets a value in member time_hour_10ms
     * @param _time_hour_10ms New value for member time_hour_10ms
     */
    eProsima_user_DllExport void time_hour_10ms(
            uint32_t _time_hour_10ms);

    /*!
     * @brief This function returns the value of member time_hour_10ms
     * @return Value of member time_hour_10ms
     */
    eProsima_user_DllExport uint32_t time_hour_10ms() const;

    /*!
     * @brief This function returns a reference to member time_hour_10ms
     * @return Reference to member time_hour_10ms
     */
    eProsima_user_DllExport uint32_t& time_hour_10ms();

    /*!
     * @brief This function sets a value in member time_minute_10ms
     * @param _time_minute_10ms New value for member time_minute_10ms
     */
    eProsima_user_DllExport void time_minute_10ms(
            uint32_t _time_minute_10ms);

    /*!
     * @brief This function returns the value of member time_minute_10ms
     * @return Value of member time_minute_10ms
     */
    eProsima_user_DllExport uint32_t time_minute_10ms() const;

    /*!
     * @brief This function returns a reference to member time_minute_10ms
     * @return Reference to member time_minute_10ms
     */
    eProsima_user_DllExport uint32_t& time_minute_10ms();

    /*!
     * @brief This function sets a value in member time_second_10ms
     * @param _time_second_10ms New value for member time_second_10ms
     */
    eProsima_user_DllExport void time_second_10ms(
            uint32_t _time_second_10ms);

    /*!
     * @brief This function returns the value of member time_second_10ms
     * @return Value of member time_second_10ms
     */
    eProsima_user_DllExport uint32_t time_second_10ms() const;

    /*!
     * @brief This function returns a reference to member time_second_10ms
     * @return Reference to member time_second_10ms
     */
    eProsima_user_DllExport uint32_t& time_second_10ms();

    /*!
     * @brief This function sets a value in member gps_msec_10ms
     * @param _gps_msec_10ms New value for member gps_msec_10ms
     */
    eProsima_user_DllExport void gps_msec_10ms(
            uint64_t _gps_msec_10ms);

    /*!
     * @brief This function returns the value of member gps_msec_10ms
     * @return Value of member gps_msec_10ms
     */
    eProsima_user_DllExport uint64_t gps_msec_10ms() const;

    /*!
     * @brief This function returns a reference to member gps_msec_10ms
     * @return Reference to member gps_msec_10ms
     */
    eProsima_user_DllExport uint64_t& gps_msec_10ms();

    /*!
     * @brief This function sets a value in member gps_rtk_status_10ms
     * @param _gps_rtk_status_10ms New value for member gps_rtk_status_10ms
     */
    eProsima_user_DllExport void gps_rtk_status_10ms(
            int32_t _gps_rtk_status_10ms);

    /*!
     * @brief This function returns the value of member gps_rtk_status_10ms
     * @return Value of member gps_rtk_status_10ms
     */
    eProsima_user_DllExport int32_t gps_rtk_status_10ms() const;

    /*!
     * @brief This function returns a reference to member gps_rtk_status_10ms
     * @return Reference to member gps_rtk_status_10ms
     */
    eProsima_user_DllExport int32_t& gps_rtk_status_10ms();

    /*!
     * @brief This function sets a value in member gps_lat_10ms
     * @param _gps_lat_10ms New value for member gps_lat_10ms
     */
    eProsima_user_DllExport void gps_lat_10ms(
            double _gps_lat_10ms);

    /*!
     * @brief This function returns the value of member gps_lat_10ms
     * @return Value of member gps_lat_10ms
     */
    eProsima_user_DllExport double gps_lat_10ms() const;

    /*!
     * @brief This function returns a reference to member gps_lat_10ms
     * @return Reference to member gps_lat_10ms
     */
    eProsima_user_DllExport double& gps_lat_10ms();

    /*!
     * @brief This function sets a value in member gps_lng_10ms
     * @param _gps_lng_10ms New value for member gps_lng_10ms
     */
    eProsima_user_DllExport void gps_lng_10ms(
            double _gps_lng_10ms);

    /*!
     * @brief This function returns the value of member gps_lng_10ms
     * @return Value of member gps_lng_10ms
     */
    eProsima_user_DllExport double gps_lng_10ms() const;

    /*!
     * @brief This function returns a reference to member gps_lng_10ms
     * @return Reference to member gps_lng_10ms
     */
    eProsima_user_DllExport double& gps_lng_10ms();

    /*!
     * @brief This function sets a value in member gps_heading_10ms
     * @param _gps_heading_10ms New value for member gps_heading_10ms
     */
    eProsima_user_DllExport void gps_heading_10ms(
            float _gps_heading_10ms);

    /*!
     * @brief This function returns the value of member gps_heading_10ms
     * @return Value of member gps_heading_10ms
     */
    eProsima_user_DllExport float gps_heading_10ms() const;

    /*!
     * @brief This function returns a reference to member gps_heading_10ms
     * @return Reference to member gps_heading_10ms
     */
    eProsima_user_DllExport float& gps_heading_10ms();

    /*!
     * @brief This function sets a value in member gps_ve_10ms
     * @param _gps_ve_10ms New value for member gps_ve_10ms
     */
    eProsima_user_DllExport void gps_ve_10ms(
            float _gps_ve_10ms);

    /*!
     * @brief This function returns the value of member gps_ve_10ms
     * @return Value of member gps_ve_10ms
     */
    eProsima_user_DllExport float gps_ve_10ms() const;

    /*!
     * @brief This function returns a reference to member gps_ve_10ms
     * @return Reference to member gps_ve_10ms
     */
    eProsima_user_DllExport float& gps_ve_10ms();

    /*!
     * @brief This function sets a value in member gps_vn_10ms
     * @param _gps_vn_10ms New value for member gps_vn_10ms
     */
    eProsima_user_DllExport void gps_vn_10ms(
            float _gps_vn_10ms);

    /*!
     * @brief This function returns the value of member gps_vn_10ms
     * @return Value of member gps_vn_10ms
     */
    eProsima_user_DllExport float gps_vn_10ms() const;

    /*!
     * @brief This function returns a reference to member gps_vn_10ms
     * @return Reference to member gps_vn_10ms
     */
    eProsima_user_DllExport float& gps_vn_10ms();

    /*!
     * @brief This function sets a value in member gps_vd_10ms
     * @param _gps_vd_10ms New value for member gps_vd_10ms
     */
    eProsima_user_DllExport void gps_vd_10ms(
            float _gps_vd_10ms);

    /*!
     * @brief This function returns the value of member gps_vd_10ms
     * @return Value of member gps_vd_10ms
     */
    eProsima_user_DllExport float gps_vd_10ms() const;

    /*!
     * @brief This function returns a reference to member gps_vd_10ms
     * @return Reference to member gps_vd_10ms
     */
    eProsima_user_DllExport float& gps_vd_10ms();

    /*!
     * @brief This function sets a value in member gps_speed_10ms
     * @param _gps_speed_10ms New value for member gps_speed_10ms
     */
    eProsima_user_DllExport void gps_speed_10ms(
            float _gps_speed_10ms);

    /*!
     * @brief This function returns the value of member gps_speed_10ms
     * @return Value of member gps_speed_10ms
     */
    eProsima_user_DllExport float gps_speed_10ms() const;

    /*!
     * @brief This function returns a reference to member gps_speed_10ms
     * @return Reference to member gps_speed_10ms
     */
    eProsima_user_DllExport float& gps_speed_10ms();

    /*!
     * @brief This function sets a value in member gps_days_to_speed_10ms
     * @param _gps_days_to_speed_10ms New value for member gps_days_to_speed_10ms
     */
    eProsima_user_DllExport void gps_days_to_speed_10ms(
            float _gps_days_to_speed_10ms);

    /*!
     * @brief This function returns the value of member gps_days_to_speed_10ms
     * @return Value of member gps_days_to_speed_10ms
     */
    eProsima_user_DllExport float gps_days_to_speed_10ms() const;

    /*!
     * @brief This function returns a reference to member gps_days_to_speed_10ms
     * @return Reference to member gps_days_to_speed_10ms
     */
    eProsima_user_DllExport float& gps_days_to_speed_10ms();

    /*!
     * @brief This function sets a value in member gps_height_10ms
     * @param _gps_height_10ms New value for member gps_height_10ms
     */
    eProsima_user_DllExport void gps_height_10ms(
            float _gps_height_10ms);

    /*!
     * @brief This function returns the value of member gps_height_10ms
     * @return Value of member gps_height_10ms
     */
    eProsima_user_DllExport float gps_height_10ms() const;

    /*!
     * @brief This function returns a reference to member gps_height_10ms
     * @return Reference to member gps_height_10ms
     */
    eProsima_user_DllExport float& gps_height_10ms();

    /*!
     * @brief This function sets a value in member imu_acc_y_10ms
     * @param _imu_acc_y_10ms New value for member imu_acc_y_10ms
     */
    eProsima_user_DllExport void imu_acc_y_10ms(
            float _imu_acc_y_10ms);

    /*!
     * @brief This function returns the value of member imu_acc_y_10ms
     * @return Value of member imu_acc_y_10ms
     */
    eProsima_user_DllExport float imu_acc_y_10ms() const;

    /*!
     * @brief This function returns a reference to member imu_acc_y_10ms
     * @return Reference to member imu_acc_y_10ms
     */
    eProsima_user_DllExport float& imu_acc_y_10ms();

    /*!
     * @brief This function sets a value in member imu_acc_x_10ms
     * @param _imu_acc_x_10ms New value for member imu_acc_x_10ms
     */
    eProsima_user_DllExport void imu_acc_x_10ms(
            float _imu_acc_x_10ms);

    /*!
     * @brief This function returns the value of member imu_acc_x_10ms
     * @return Value of member imu_acc_x_10ms
     */
    eProsima_user_DllExport float imu_acc_x_10ms() const;

    /*!
     * @brief This function returns a reference to member imu_acc_x_10ms
     * @return Reference to member imu_acc_x_10ms
     */
    eProsima_user_DllExport float& imu_acc_x_10ms();

    /*!
     * @brief This function sets a value in member imu_yaw_z_10ms
     * @param _imu_yaw_z_10ms New value for member imu_yaw_z_10ms
     */
    eProsima_user_DllExport void imu_yaw_z_10ms(
            float _imu_yaw_z_10ms);

    /*!
     * @brief This function returns the value of member imu_yaw_z_10ms
     * @return Value of member imu_yaw_z_10ms
     */
    eProsima_user_DllExport float imu_yaw_z_10ms() const;

    /*!
     * @brief This function returns a reference to member imu_yaw_z_10ms
     * @return Reference to member imu_yaw_z_10ms
     */
    eProsima_user_DllExport float& imu_yaw_z_10ms();

    /*!
     * @brief This function sets a value in member imu_v_y_10ms
     * @param _imu_v_y_10ms New value for member imu_v_y_10ms
     */
    eProsima_user_DllExport void imu_v_y_10ms(
            float _imu_v_y_10ms);

    /*!
     * @brief This function returns the value of member imu_v_y_10ms
     * @return Value of member imu_v_y_10ms
     */
    eProsima_user_DllExport float imu_v_y_10ms() const;

    /*!
     * @brief This function returns a reference to member imu_v_y_10ms
     * @return Reference to member imu_v_y_10ms
     */
    eProsima_user_DllExport float& imu_v_y_10ms();

    /*!
     * @brief This function sets a value in member imu_v_x_10ms
     * @param _imu_v_x_10ms New value for member imu_v_x_10ms
     */
    eProsima_user_DllExport void imu_v_x_10ms(
            float _imu_v_x_10ms);

    /*!
     * @brief This function returns the value of member imu_v_x_10ms
     * @return Value of member imu_v_x_10ms
     */
    eProsima_user_DllExport float imu_v_x_10ms() const;

    /*!
     * @brief This function returns a reference to member imu_v_x_10ms
     * @return Reference to member imu_v_x_10ms
     */
    eProsima_user_DllExport float& imu_v_x_10ms();

    /*!
     * @brief This function sets a value in member imu_v_z_10ms
     * @param _imu_v_z_10ms New value for member imu_v_z_10ms
     */
    eProsima_user_DllExport void imu_v_z_10ms(
            float _imu_v_z_10ms);

    /*!
     * @brief This function returns the value of member imu_v_z_10ms
     * @return Value of member imu_v_z_10ms
     */
    eProsima_user_DllExport float imu_v_z_10ms() const;

    /*!
     * @brief This function returns a reference to member imu_v_z_10ms
     * @return Reference to member imu_v_z_10ms
     */
    eProsima_user_DllExport float& imu_v_z_10ms();

    /*!
     * @brief This function sets a value in member gps_satellite_front_10ms
     * @param _gps_satellite_front_10ms New value for member gps_satellite_front_10ms
     */
    eProsima_user_DllExport void gps_satellite_front_10ms(
            int32_t _gps_satellite_front_10ms);

    /*!
     * @brief This function returns the value of member gps_satellite_front_10ms
     * @return Value of member gps_satellite_front_10ms
     */
    eProsima_user_DllExport int32_t gps_satellite_front_10ms() const;

    /*!
     * @brief This function returns a reference to member gps_satellite_front_10ms
     * @return Reference to member gps_satellite_front_10ms
     */
    eProsima_user_DllExport int32_t& gps_satellite_front_10ms();

    /*!
     * @brief This function sets a value in member gps_satellite_rear_10ms
     * @param _gps_satellite_rear_10ms New value for member gps_satellite_rear_10ms
     */
    eProsima_user_DllExport void gps_satellite_rear_10ms(
            int32_t _gps_satellite_rear_10ms);

    /*!
     * @brief This function returns the value of member gps_satellite_rear_10ms
     * @return Value of member gps_satellite_rear_10ms
     */
    eProsima_user_DllExport int32_t gps_satellite_rear_10ms() const;

    /*!
     * @brief This function returns a reference to member gps_satellite_rear_10ms
     * @return Reference to member gps_satellite_rear_10ms
     */
    eProsima_user_DllExport int32_t& gps_satellite_rear_10ms();

    /*!
     * @brief This function sets a value in member gps_yaw_10ms
     * @param _gps_yaw_10ms New value for member gps_yaw_10ms
     */
    eProsima_user_DllExport void gps_yaw_10ms(
            float _gps_yaw_10ms);

    /*!
     * @brief This function returns the value of member gps_yaw_10ms
     * @return Value of member gps_yaw_10ms
     */
    eProsima_user_DllExport float gps_yaw_10ms() const;

    /*!
     * @brief This function returns a reference to member gps_yaw_10ms
     * @return Reference to member gps_yaw_10ms
     */
    eProsima_user_DllExport float& gps_yaw_10ms();

    /*!
     * @brief This function sets a value in member gps_roll_10ms
     * @param _gps_roll_10ms New value for member gps_roll_10ms
     */
    eProsima_user_DllExport void gps_roll_10ms(
            float _gps_roll_10ms);

    /*!
     * @brief This function returns the value of member gps_roll_10ms
     * @return Value of member gps_roll_10ms
     */
    eProsima_user_DllExport float gps_roll_10ms() const;

    /*!
     * @brief This function returns a reference to member gps_roll_10ms
     * @return Reference to member gps_roll_10ms
     */
    eProsima_user_DllExport float& gps_roll_10ms();

    /*!
     * @brief This function sets a value in member gps_pitch_10ms
     * @param _gps_pitch_10ms New value for member gps_pitch_10ms
     */
    eProsima_user_DllExport void gps_pitch_10ms(
            float _gps_pitch_10ms);

    /*!
     * @brief This function returns the value of member gps_pitch_10ms
     * @return Value of member gps_pitch_10ms
     */
    eProsima_user_DllExport float gps_pitch_10ms() const;

    /*!
     * @brief This function returns a reference to member gps_pitch_10ms
     * @return Reference to member gps_pitch_10ms
     */
    eProsima_user_DllExport float& gps_pitch_10ms();

    /*!
     * @brief This function sets a value in member course_Angle_condition
     * @param _course_Angle_condition New value for member course_Angle_condition
     */
    eProsima_user_DllExport void course_Angle_condition(
            uint32_t _course_Angle_condition);

    /*!
     * @brief This function returns the value of member course_Angle_condition
     * @return Value of member course_Angle_condition
     */
    eProsima_user_DllExport uint32_t course_Angle_condition() const;

    /*!
     * @brief This function returns a reference to member course_Angle_condition
     * @return Reference to member course_Angle_condition
     */
    eProsima_user_DllExport uint32_t& course_Angle_condition();

    /*!
     * @brief This function sets a value in member vehicle_status_marker
     * @param _vehicle_status_marker New value for member vehicle_status_marker
     */
    eProsima_user_DllExport void vehicle_status_marker(
            uint32_t _vehicle_status_marker);

    /*!
     * @brief This function returns the value of member vehicle_status_marker
     * @return Value of member vehicle_status_marker
     */
    eProsima_user_DllExport uint32_t vehicle_status_marker() const;

    /*!
     * @brief This function returns a reference to member vehicle_status_marker
     * @return Reference to member vehicle_status_marker
     */
    eProsima_user_DllExport uint32_t& vehicle_status_marker();

    /*!
     * @brief This function sets a value in member GpsNumSatsUsed
     * @param _GpsNumSatsUsed New value for member GpsNumSatsUsed
     */
    eProsima_user_DllExport void GpsNumSatsUsed(
            uint32_t _GpsNumSatsUsed);

    /*!
     * @brief This function returns the value of member GpsNumSatsUsed
     * @return Value of member GpsNumSatsUsed
     */
    eProsima_user_DllExport uint32_t GpsNumSatsUsed() const;

    /*!
     * @brief This function returns a reference to member GpsNumSatsUsed
     * @return Reference to member GpsNumSatsUsed
     */
    eProsima_user_DllExport uint32_t& GpsNumSatsUsed();

    /*!
     * @brief This function sets a value in member GpsNumSats2Used
     * @param _GpsNumSats2Used New value for member GpsNumSats2Used
     */
    eProsima_user_DllExport void GpsNumSats2Used(
            uint32_t _GpsNumSats2Used);

    /*!
     * @brief This function returns the value of member GpsNumSats2Used
     * @return Value of member GpsNumSats2Used
     */
    eProsima_user_DllExport uint32_t GpsNumSats2Used() const;

    /*!
     * @brief This function returns a reference to member GpsNumSats2Used
     * @return Reference to member GpsNumSats2Used
     */
    eProsima_user_DllExport uint32_t& GpsNumSats2Used();

    /*!
     * @brief This function sets a value in member integrated_navigation_overall_status_flag_bits
     * @param _integrated_navigation_overall_status_flag_bits New value for member integrated_navigation_overall_status_flag_bits
     */
    eProsima_user_DllExport void integrated_navigation_overall_status_flag_bits(
            uint32_t _integrated_navigation_overall_status_flag_bits);

    /*!
     * @brief This function returns the value of member integrated_navigation_overall_status_flag_bits
     * @return Value of member integrated_navigation_overall_status_flag_bits
     */
    eProsima_user_DllExport uint32_t integrated_navigation_overall_status_flag_bits() const;

    /*!
     * @brief This function returns a reference to member integrated_navigation_overall_status_flag_bits
     * @return Reference to member integrated_navigation_overall_status_flag_bits
     */
    eProsima_user_DllExport uint32_t& integrated_navigation_overall_status_flag_bits();


    /*!
     * @brief This function returns the maximum serialized size of an object
     * depending on the buffer alignment.
     * @param current_alignment Buffer alignment.
     * @return Maximum serialized size.
     */
    eProsima_user_DllExport static size_t getMaxCdrSerializedSize(
            size_t current_alignment = 0);

    /*!
     * @brief This function returns the serialized size of a data depending on the buffer alignment.
     * @param data Data which is calculated its serialized size.
     * @param current_alignment Buffer alignment.
     * @return Serialized size.
     */
    eProsima_user_DllExport static size_t getCdrSerializedSize(
            const DDS_GpsImuInfo& data,
            size_t current_alignment = 0);


    /*!
     * @brief This function serializes an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void serialize(
            eprosima::fastcdr::Cdr& cdr) const;

    /*!
     * @brief This function deserializes an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void deserialize(
            eprosima::fastcdr::Cdr& cdr);



    /*!
     * @brief This function returns the maximum serialized size of the Key of an object
     * depending on the buffer alignment.
     * @param current_alignment Buffer alignment.
     * @return Maximum serialized size.
     */
    eProsima_user_DllExport static size_t getKeyMaxCdrSerializedSize(
            size_t current_alignment = 0);

    /*!
     * @brief This function tells you if the Key has been defined for this type
     */
    eProsima_user_DllExport static bool isKeyDefined();

    /*!
     * @brief This function serializes the key members of an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void serializeKey(
            eprosima::fastcdr::Cdr& cdr) const;

private:

    int64_t m_stamp;
    int32_t m_gps_week_10ms;
    float m_gps_time_10ms;
    float m_time_year_10ms;
    tmdesc_imu m_time_record_10ms;
    uint32_t m_time_month_10ms;
    uint32_t m_time_day_10ms;
    uint32_t m_time_hour_10ms;
    uint32_t m_time_minute_10ms;
    uint32_t m_time_second_10ms;
    uint64_t m_gps_msec_10ms;
    int32_t m_gps_rtk_status_10ms;
    double m_gps_lat_10ms;
    double m_gps_lng_10ms;
    float m_gps_heading_10ms;
    float m_gps_ve_10ms;
    float m_gps_vn_10ms;
    float m_gps_vd_10ms;
    float m_gps_speed_10ms;
    float m_gps_days_to_speed_10ms;
    float m_gps_height_10ms;
    float m_imu_acc_y_10ms;
    float m_imu_acc_x_10ms;
    float m_imu_yaw_z_10ms;
    float m_imu_v_y_10ms;
    float m_imu_v_x_10ms;
    float m_imu_v_z_10ms;
    int32_t m_gps_satellite_front_10ms;
    int32_t m_gps_satellite_rear_10ms;
    float m_gps_yaw_10ms;
    float m_gps_roll_10ms;
    float m_gps_pitch_10ms;
    uint32_t m_course_Angle_condition;
    uint32_t m_vehicle_status_marker;
    uint32_t m_GpsNumSatsUsed;
    uint32_t m_GpsNumSats2Used;
    uint32_t m_integrated_navigation_overall_status_flag_bits;
};
/*!
 * @brief This class represents the structure DDS_IMU defined by the user in the IDL file.
 * @ingroup FUSION_LOCALIZATION
 */
class DDS_IMU
{
public:

    /*!
     * @brief Default constructor.
     */
    eProsima_user_DllExport DDS_IMU();

    /*!
     * @brief Default destructor.
     */
    eProsima_user_DllExport ~DDS_IMU();

    /*!
     * @brief Copy constructor.
     * @param x Reference to the object DDS_IMU that will be copied.
     */
    eProsima_user_DllExport DDS_IMU(
            const DDS_IMU& x);

    /*!
     * @brief Move constructor.
     * @param x Reference to the object DDS_IMU that will be copied.
     */
    eProsima_user_DllExport DDS_IMU(
            DDS_IMU&& x);

    /*!
     * @brief Copy assignment.
     * @param x Reference to the object DDS_IMU that will be copied.
     */
    eProsima_user_DllExport DDS_IMU& operator =(
            const DDS_IMU& x);

    /*!
     * @brief Move assignment.
     * @param x Reference to the object DDS_IMU that will be copied.
     */
    eProsima_user_DllExport DDS_IMU& operator =(
            DDS_IMU&& x);

    /*!
     * @brief This function sets a value in member stamp
     * @param _stamp New value for member stamp
     */
    eProsima_user_DllExport void stamp(
            double _stamp);

    /*!
     * @brief This function returns the value of member stamp
     * @return Value of member stamp
     */
    eProsima_user_DllExport double stamp() const;

    /*!
     * @brief This function returns a reference to member stamp
     * @return Reference to member stamp
     */
    eProsima_user_DllExport double& stamp();

    /*!
     * @brief This function copies the value in member orientation
     * @param _orientation New value to be copied in member orientation
     */
    eProsima_user_DllExport void orientation(
            const std::array<double, 4>& _orientation);

    /*!
     * @brief This function moves the value in member orientation
     * @param _orientation New value to be moved in member orientation
     */
    eProsima_user_DllExport void orientation(
            std::array<double, 4>&& _orientation);

    /*!
     * @brief This function returns a constant reference to member orientation
     * @return Constant reference to member orientation
     */
    eProsima_user_DllExport const std::array<double, 4>& orientation() const;

    /*!
     * @brief This function returns a reference to member orientation
     * @return Reference to member orientation
     */
    eProsima_user_DllExport std::array<double, 4>& orientation();
    /*!
     * @brief This function copies the value in member orientation_covariance
     * @param _orientation_covariance New value to be copied in member orientation_covariance
     */
    eProsima_user_DllExport void orientation_covariance(
            const std::array<double, 9>& _orientation_covariance);

    /*!
     * @brief This function moves the value in member orientation_covariance
     * @param _orientation_covariance New value to be moved in member orientation_covariance
     */
    eProsima_user_DllExport void orientation_covariance(
            std::array<double, 9>&& _orientation_covariance);

    /*!
     * @brief This function returns a constant reference to member orientation_covariance
     * @return Constant reference to member orientation_covariance
     */
    eProsima_user_DllExport const std::array<double, 9>& orientation_covariance() const;

    /*!
     * @brief This function returns a reference to member orientation_covariance
     * @return Reference to member orientation_covariance
     */
    eProsima_user_DllExport std::array<double, 9>& orientation_covariance();
    /*!
     * @brief This function copies the value in member angular_velocity
     * @param _angular_velocity New value to be copied in member angular_velocity
     */
    eProsima_user_DllExport void angular_velocity(
            const std::array<double, 3>& _angular_velocity);

    /*!
     * @brief This function moves the value in member angular_velocity
     * @param _angular_velocity New value to be moved in member angular_velocity
     */
    eProsima_user_DllExport void angular_velocity(
            std::array<double, 3>&& _angular_velocity);

    /*!
     * @brief This function returns a constant reference to member angular_velocity
     * @return Constant reference to member angular_velocity
     */
    eProsima_user_DllExport const std::array<double, 3>& angular_velocity() const;

    /*!
     * @brief This function returns a reference to member angular_velocity
     * @return Reference to member angular_velocity
     */
    eProsima_user_DllExport std::array<double, 3>& angular_velocity();
    /*!
     * @brief This function copies the value in member angular_velocity_covariance
     * @param _angular_velocity_covariance New value to be copied in member angular_velocity_covariance
     */
    eProsima_user_DllExport void angular_velocity_covariance(
            const std::array<double, 9>& _angular_velocity_covariance);

    /*!
     * @brief This function moves the value in member angular_velocity_covariance
     * @param _angular_velocity_covariance New value to be moved in member angular_velocity_covariance
     */
    eProsima_user_DllExport void angular_velocity_covariance(
            std::array<double, 9>&& _angular_velocity_covariance);

    /*!
     * @brief This function returns a constant reference to member angular_velocity_covariance
     * @return Constant reference to member angular_velocity_covariance
     */
    eProsima_user_DllExport const std::array<double, 9>& angular_velocity_covariance() const;

    /*!
     * @brief This function returns a reference to member angular_velocity_covariance
     * @return Reference to member angular_velocity_covariance
     */
    eProsima_user_DllExport std::array<double, 9>& angular_velocity_covariance();
    /*!
     * @brief This function copies the value in member linear_acceleration
     * @param _linear_acceleration New value to be copied in member linear_acceleration
     */
    eProsima_user_DllExport void linear_acceleration(
            const std::array<double, 3>& _linear_acceleration);

    /*!
     * @brief This function moves the value in member linear_acceleration
     * @param _linear_acceleration New value to be moved in member linear_acceleration
     */
    eProsima_user_DllExport void linear_acceleration(
            std::array<double, 3>&& _linear_acceleration);

    /*!
     * @brief This function returns a constant reference to member linear_acceleration
     * @return Constant reference to member linear_acceleration
     */
    eProsima_user_DllExport const std::array<double, 3>& linear_acceleration() const;

    /*!
     * @brief This function returns a reference to member linear_acceleration
     * @return Reference to member linear_acceleration
     */
    eProsima_user_DllExport std::array<double, 3>& linear_acceleration();
    /*!
     * @brief This function copies the value in member linear_acceleration_covariance
     * @param _linear_acceleration_covariance New value to be copied in member linear_acceleration_covariance
     */
    eProsima_user_DllExport void linear_acceleration_covariance(
            const std::array<double, 9>& _linear_acceleration_covariance);

    /*!
     * @brief This function moves the value in member linear_acceleration_covariance
     * @param _linear_acceleration_covariance New value to be moved in member linear_acceleration_covariance
     */
    eProsima_user_DllExport void linear_acceleration_covariance(
            std::array<double, 9>&& _linear_acceleration_covariance);

    /*!
     * @brief This function returns a constant reference to member linear_acceleration_covariance
     * @return Constant reference to member linear_acceleration_covariance
     */
    eProsima_user_DllExport const std::array<double, 9>& linear_acceleration_covariance() const;

    /*!
     * @brief This function returns a reference to member linear_acceleration_covariance
     * @return Reference to member linear_acceleration_covariance
     */
    eProsima_user_DllExport std::array<double, 9>& linear_acceleration_covariance();

    /*!
     * @brief This function returns the maximum serialized size of an object
     * depending on the buffer alignment.
     * @param current_alignment Buffer alignment.
     * @return Maximum serialized size.
     */
    eProsima_user_DllExport static size_t getMaxCdrSerializedSize(
            size_t current_alignment = 0);

    /*!
     * @brief This function returns the serialized size of a data depending on the buffer alignment.
     * @param data Data which is calculated its serialized size.
     * @param current_alignment Buffer alignment.
     * @return Serialized size.
     */
    eProsima_user_DllExport static size_t getCdrSerializedSize(
            const DDS_IMU& data,
            size_t current_alignment = 0);


    /*!
     * @brief This function serializes an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void serialize(
            eprosima::fastcdr::Cdr& cdr) const;

    /*!
     * @brief This function deserializes an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void deserialize(
            eprosima::fastcdr::Cdr& cdr);



    /*!
     * @brief This function returns the maximum serialized size of the Key of an object
     * depending on the buffer alignment.
     * @param current_alignment Buffer alignment.
     * @return Maximum serialized size.
     */
    eProsima_user_DllExport static size_t getKeyMaxCdrSerializedSize(
            size_t current_alignment = 0);

    /*!
     * @brief This function tells you if the Key has been defined for this type
     */
    eProsima_user_DllExport static bool isKeyDefined();

    /*!
     * @brief This function serializes the key members of an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void serializeKey(
            eprosima::fastcdr::Cdr& cdr) const;

private:

    double m_stamp;
    std::array<double, 4> m_orientation;
    std::array<double, 9> m_orientation_covariance;
    std::array<double, 3> m_angular_velocity;
    std::array<double, 9> m_angular_velocity_covariance;
    std::array<double, 3> m_linear_acceleration;
    std::array<double, 9> m_linear_acceleration_covariance;
};
/*!
 * @brief This class represents the structure DDS_RTK defined by the user in the IDL file.
 * @ingroup FUSION_LOCALIZATION
 */
class DDS_RTK
{
public:

    /*!
     * @brief Default constructor.
     */
    eProsima_user_DllExport DDS_RTK();

    /*!
     * @brief Default destructor.
     */
    eProsima_user_DllExport ~DDS_RTK();

    /*!
     * @brief Copy constructor.
     * @param x Reference to the object DDS_RTK that will be copied.
     */
    eProsima_user_DllExport DDS_RTK(
            const DDS_RTK& x);

    /*!
     * @brief Move constructor.
     * @param x Reference to the object DDS_RTK that will be copied.
     */
    eProsima_user_DllExport DDS_RTK(
            DDS_RTK&& x);

    /*!
     * @brief Copy assignment.
     * @param x Reference to the object DDS_RTK that will be copied.
     */
    eProsima_user_DllExport DDS_RTK& operator =(
            const DDS_RTK& x);

    /*!
     * @brief Move assignment.
     * @param x Reference to the object DDS_RTK that will be copied.
     */
    eProsima_user_DllExport DDS_RTK& operator =(
            DDS_RTK&& x);

    /*!
     * @brief This function sets a value in member stamp
     * @param _stamp New value for member stamp
     */
    eProsima_user_DllExport void stamp(
            double _stamp);

    /*!
     * @brief This function returns the value of member stamp
     * @return Value of member stamp
     */
    eProsima_user_DllExport double stamp() const;

    /*!
     * @brief This function returns a reference to member stamp
     * @return Reference to member stamp
     */
    eProsima_user_DllExport double& stamp();

    /*!
     * @brief This function sets a value in member longitude
     * @param _longitude New value for member longitude
     */
    eProsima_user_DllExport void longitude(
            double _longitude);

    /*!
     * @brief This function returns the value of member longitude
     * @return Value of member longitude
     */
    eProsima_user_DllExport double longitude() const;

    /*!
     * @brief This function returns a reference to member longitude
     * @return Reference to member longitude
     */
    eProsima_user_DllExport double& longitude();

    /*!
     * @brief This function sets a value in member latitude
     * @param _latitude New value for member latitude
     */
    eProsima_user_DllExport void latitude(
            double _latitude);

    /*!
     * @brief This function returns the value of member latitude
     * @return Value of member latitude
     */
    eProsima_user_DllExport double latitude() const;

    /*!
     * @brief This function returns a reference to member latitude
     * @return Reference to member latitude
     */
    eProsima_user_DllExport double& latitude();

    /*!
     * @brief This function sets a value in member altitude
     * @param _altitude New value for member altitude
     */
    eProsima_user_DllExport void altitude(
            double _altitude);

    /*!
     * @brief This function returns the value of member altitude
     * @return Value of member altitude
     */
    eProsima_user_DllExport double altitude() const;

    /*!
     * @brief This function returns a reference to member altitude
     * @return Reference to member altitude
     */
    eProsima_user_DllExport double& altitude();

    /*!
     * @brief This function sets a value in member roll
     * @param _roll New value for member roll
     */
    eProsima_user_DllExport void roll(
            double _roll);

    /*!
     * @brief This function returns the value of member roll
     * @return Value of member roll
     */
    eProsima_user_DllExport double roll() const;

    /*!
     * @brief This function returns a reference to member roll
     * @return Reference to member roll
     */
    eProsima_user_DllExport double& roll();

    /*!
     * @brief This function sets a value in member pitch
     * @param _pitch New value for member pitch
     */
    eProsima_user_DllExport void pitch(
            double _pitch);

    /*!
     * @brief This function returns the value of member pitch
     * @return Value of member pitch
     */
    eProsima_user_DllExport double pitch() const;

    /*!
     * @brief This function returns a reference to member pitch
     * @return Reference to member pitch
     */
    eProsima_user_DllExport double& pitch();

    /*!
     * @brief This function sets a value in member yaw
     * @param _yaw New value for member yaw
     */
    eProsima_user_DllExport void yaw(
            double _yaw);

    /*!
     * @brief This function returns the value of member yaw
     * @return Value of member yaw
     */
    eProsima_user_DllExport double yaw() const;

    /*!
     * @brief This function returns a reference to member yaw
     * @return Reference to member yaw
     */
    eProsima_user_DllExport double& yaw();

    /*!
     * @brief This function sets a value in member ve
     * @param _ve New value for member ve
     */
    eProsima_user_DllExport void ve(
            double _ve);

    /*!
     * @brief This function returns the value of member ve
     * @return Value of member ve
     */
    eProsima_user_DllExport double ve() const;

    /*!
     * @brief This function returns a reference to member ve
     * @return Reference to member ve
     */
    eProsima_user_DllExport double& ve();

    /*!
     * @brief This function sets a value in member vn
     * @param _vn New value for member vn
     */
    eProsima_user_DllExport void vn(
            double _vn);

    /*!
     * @brief This function returns the value of member vn
     * @return Value of member vn
     */
    eProsima_user_DllExport double vn() const;

    /*!
     * @brief This function returns a reference to member vn
     * @return Reference to member vn
     */
    eProsima_user_DllExport double& vn();

    /*!
     * @brief This function sets a value in member vu
     * @param _vu New value for member vu
     */
    eProsima_user_DllExport void vu(
            double _vu);

    /*!
     * @brief This function returns the value of member vu
     * @return Value of member vu
     */
    eProsima_user_DllExport double vu() const;

    /*!
     * @brief This function returns a reference to member vu
     * @return Reference to member vu
     */
    eProsima_user_DllExport double& vu();

    /*!
     * @brief This function sets a value in member rtk_status
     * @param _rtk_status New value for member rtk_status
     */
    eProsima_user_DllExport void rtk_status(
            uint8_t _rtk_status);

    /*!
     * @brief This function returns the value of member rtk_status
     * @return Value of member rtk_status
     */
    eProsima_user_DllExport uint8_t rtk_status() const;

    /*!
     * @brief This function returns a reference to member rtk_status
     * @return Reference to member rtk_status
     */
    eProsima_user_DllExport uint8_t& rtk_status();


    /*!
     * @brief This function returns the maximum serialized size of an object
     * depending on the buffer alignment.
     * @param current_alignment Buffer alignment.
     * @return Maximum serialized size.
     */
    eProsima_user_DllExport static size_t getMaxCdrSerializedSize(
            size_t current_alignment = 0);

    /*!
     * @brief This function returns the serialized size of a data depending on the buffer alignment.
     * @param data Data which is calculated its serialized size.
     * @param current_alignment Buffer alignment.
     * @return Serialized size.
     */
    eProsima_user_DllExport static size_t getCdrSerializedSize(
            const DDS_RTK& data,
            size_t current_alignment = 0);


    /*!
     * @brief This function serializes an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void serialize(
            eprosima::fastcdr::Cdr& cdr) const;

    /*!
     * @brief This function deserializes an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void deserialize(
            eprosima::fastcdr::Cdr& cdr);



    /*!
     * @brief This function returns the maximum serialized size of the Key of an object
     * depending on the buffer alignment.
     * @param current_alignment Buffer alignment.
     * @return Maximum serialized size.
     */
    eProsima_user_DllExport static size_t getKeyMaxCdrSerializedSize(
            size_t current_alignment = 0);

    /*!
     * @brief This function tells you if the Key has been defined for this type
     */
    eProsima_user_DllExport static bool isKeyDefined();

    /*!
     * @brief This function serializes the key members of an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void serializeKey(
            eprosima::fastcdr::Cdr& cdr) const;

private:

    double m_stamp;
    double m_longitude;
    double m_latitude;
    double m_altitude;
    double m_roll;
    double m_pitch;
    double m_yaw;
    double m_ve;
    double m_vn;
    double m_vu;
    uint8_t m_rtk_status;
};
/*!
 * @brief This class represents the structure DDS_Odometry defined by the user in the IDL file.
 * @ingroup FUSION_LOCALIZATION
 */
class DDS_Odometry
{
public:

    /*!
     * @brief Default constructor.
     */
    eProsima_user_DllExport DDS_Odometry();

    /*!
     * @brief Default destructor.
     */
    eProsima_user_DllExport ~DDS_Odometry();

    /*!
     * @brief Copy constructor.
     * @param x Reference to the object DDS_Odometry that will be copied.
     */
    eProsima_user_DllExport DDS_Odometry(
            const DDS_Odometry& x);

    /*!
     * @brief Move constructor.
     * @param x Reference to the object DDS_Odometry that will be copied.
     */
    eProsima_user_DllExport DDS_Odometry(
            DDS_Odometry&& x);

    /*!
     * @brief Copy assignment.
     * @param x Reference to the object DDS_Odometry that will be copied.
     */
    eProsima_user_DllExport DDS_Odometry& operator =(
            const DDS_Odometry& x);

    /*!
     * @brief Move assignment.
     * @param x Reference to the object DDS_Odometry that will be copied.
     */
    eProsima_user_DllExport DDS_Odometry& operator =(
            DDS_Odometry&& x);

    /*!
     * @brief This function sets a value in member timestamp
     * @param _timestamp New value for member timestamp
     */
    eProsima_user_DllExport void timestamp(
            double _timestamp);

    /*!
     * @brief This function returns the value of member timestamp
     * @return Value of member timestamp
     */
    eProsima_user_DllExport double timestamp() const;

    /*!
     * @brief This function returns a reference to member timestamp
     * @return Reference to member timestamp
     */
    eProsima_user_DllExport double& timestamp();

    /*!
     * @brief This function sets a value in member x
     * @param _x New value for member x
     */
    eProsima_user_DllExport void x(
            double _x);

    /*!
     * @brief This function returns the value of member x
     * @return Value of member x
     */
    eProsima_user_DllExport double x() const;

    /*!
     * @brief This function returns a reference to member x
     * @return Reference to member x
     */
    eProsima_user_DllExport double& x();

    /*!
     * @brief This function sets a value in member y
     * @param _y New value for member y
     */
    eProsima_user_DllExport void y(
            double _y);

    /*!
     * @brief This function returns the value of member y
     * @return Value of member y
     */
    eProsima_user_DllExport double y() const;

    /*!
     * @brief This function returns a reference to member y
     * @return Reference to member y
     */
    eProsima_user_DllExport double& y();

    /*!
     * @brief This function sets a value in member z
     * @param _z New value for member z
     */
    eProsima_user_DllExport void z(
            double _z);

    /*!
     * @brief This function returns the value of member z
     * @return Value of member z
     */
    eProsima_user_DllExport double z() const;

    /*!
     * @brief This function returns a reference to member z
     * @return Reference to member z
     */
    eProsima_user_DllExport double& z();

    /*!
     * @brief This function sets a value in member qw
     * @param _qw New value for member qw
     */
    eProsima_user_DllExport void qw(
            double _qw);

    /*!
     * @brief This function returns the value of member qw
     * @return Value of member qw
     */
    eProsima_user_DllExport double qw() const;

    /*!
     * @brief This function returns a reference to member qw
     * @return Reference to member qw
     */
    eProsima_user_DllExport double& qw();

    /*!
     * @brief This function sets a value in member qx
     * @param _qx New value for member qx
     */
    eProsima_user_DllExport void qx(
            double _qx);

    /*!
     * @brief This function returns the value of member qx
     * @return Value of member qx
     */
    eProsima_user_DllExport double qx() const;

    /*!
     * @brief This function returns a reference to member qx
     * @return Reference to member qx
     */
    eProsima_user_DllExport double& qx();

    /*!
     * @brief This function sets a value in member qy
     * @param _qy New value for member qy
     */
    eProsima_user_DllExport void qy(
            double _qy);

    /*!
     * @brief This function returns the value of member qy
     * @return Value of member qy
     */
    eProsima_user_DllExport double qy() const;

    /*!
     * @brief This function returns a reference to member qy
     * @return Reference to member qy
     */
    eProsima_user_DllExport double& qy();

    /*!
     * @brief This function sets a value in member qz
     * @param _qz New value for member qz
     */
    eProsima_user_DllExport void qz(
            double _qz);

    /*!
     * @brief This function returns the value of member qz
     * @return Value of member qz
     */
    eProsima_user_DllExport double qz() const;

    /*!
     * @brief This function returns a reference to member qz
     * @return Reference to member qz
     */
    eProsima_user_DllExport double& qz();

    /*!
     * @brief This function sets a value in member vx
     * @param _vx New value for member vx
     */
    eProsima_user_DllExport void vx(
            double _vx);

    /*!
     * @brief This function returns the value of member vx
     * @return Value of member vx
     */
    eProsima_user_DllExport double vx() const;

    /*!
     * @brief This function returns a reference to member vx
     * @return Reference to member vx
     */
    eProsima_user_DllExport double& vx();

    /*!
     * @brief This function sets a value in member vy
     * @param _vy New value for member vy
     */
    eProsima_user_DllExport void vy(
            double _vy);

    /*!
     * @brief This function returns the value of member vy
     * @return Value of member vy
     */
    eProsima_user_DllExport double vy() const;

    /*!
     * @brief This function returns a reference to member vy
     * @return Reference to member vy
     */
    eProsima_user_DllExport double& vy();

    /*!
     * @brief This function sets a value in member vz
     * @param _vz New value for member vz
     */
    eProsima_user_DllExport void vz(
            double _vz);

    /*!
     * @brief This function returns the value of member vz
     * @return Value of member vz
     */
    eProsima_user_DllExport double vz() const;

    /*!
     * @brief This function returns a reference to member vz
     * @return Reference to member vz
     */
    eProsima_user_DllExport double& vz();

    /*!
     * @brief This function sets a value in member odom_status
     * @param _odom_status New value for member odom_status
     */
    eProsima_user_DllExport void odom_status(
            uint8_t _odom_status);

    /*!
     * @brief This function returns the value of member odom_status
     * @return Value of member odom_status
     */
    eProsima_user_DllExport uint8_t odom_status() const;

    /*!
     * @brief This function returns a reference to member odom_status
     * @return Reference to member odom_status
     */
    eProsima_user_DllExport uint8_t& odom_status();


    /*!
     * @brief This function returns the maximum serialized size of an object
     * depending on the buffer alignment.
     * @param current_alignment Buffer alignment.
     * @return Maximum serialized size.
     */
    eProsima_user_DllExport static size_t getMaxCdrSerializedSize(
            size_t current_alignment = 0);

    /*!
     * @brief This function returns the serialized size of a data depending on the buffer alignment.
     * @param data Data which is calculated its serialized size.
     * @param current_alignment Buffer alignment.
     * @return Serialized size.
     */
    eProsima_user_DllExport static size_t getCdrSerializedSize(
            const DDS_Odometry& data,
            size_t current_alignment = 0);


    /*!
     * @brief This function serializes an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void serialize(
            eprosima::fastcdr::Cdr& cdr) const;

    /*!
     * @brief This function deserializes an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void deserialize(
            eprosima::fastcdr::Cdr& cdr);



    /*!
     * @brief This function returns the maximum serialized size of the Key of an object
     * depending on the buffer alignment.
     * @param current_alignment Buffer alignment.
     * @return Maximum serialized size.
     */
    eProsima_user_DllExport static size_t getKeyMaxCdrSerializedSize(
            size_t current_alignment = 0);

    /*!
     * @brief This function tells you if the Key has been defined for this type
     */
    eProsima_user_DllExport static bool isKeyDefined();

    /*!
     * @brief This function serializes the key members of an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void serializeKey(
            eprosima::fastcdr::Cdr& cdr) const;

private:

    double m_timestamp;
    double m_x;
    double m_y;
    double m_z;
    double m_qw;
    double m_qx;
    double m_qy;
    double m_qz;
    double m_vx;
    double m_vy;
    double m_vz;
    uint8_t m_odom_status;
};
/*!
 * @brief This class represents the structure DDS_LidarCloudInfo defined by the user in the IDL file.
 * @ingroup FUSION_LOCALIZATION
 */
class DDS_LidarCloudInfo
{
public:

    /*!
     * @brief Default constructor.
     */
    eProsima_user_DllExport DDS_LidarCloudInfo();

    /*!
     * @brief Default destructor.
     */
    eProsima_user_DllExport ~DDS_LidarCloudInfo();

    /*!
     * @brief Copy constructor.
     * @param x Reference to the object DDS_LidarCloudInfo that will be copied.
     */
    eProsima_user_DllExport DDS_LidarCloudInfo(
            const DDS_LidarCloudInfo& x);

    /*!
     * @brief Move constructor.
     * @param x Reference to the object DDS_LidarCloudInfo that will be copied.
     */
    eProsima_user_DllExport DDS_LidarCloudInfo(
            DDS_LidarCloudInfo&& x);

    /*!
     * @brief Copy assignment.
     * @param x Reference to the object DDS_LidarCloudInfo that will be copied.
     */
    eProsima_user_DllExport DDS_LidarCloudInfo& operator =(
            const DDS_LidarCloudInfo& x);

    /*!
     * @brief Move assignment.
     * @param x Reference to the object DDS_LidarCloudInfo that will be copied.
     */
    eProsima_user_DllExport DDS_LidarCloudInfo& operator =(
            DDS_LidarCloudInfo&& x);

    /*!
     * @brief This function sets a value in member timestamp
     * @param _timestamp New value for member timestamp
     */
    eProsima_user_DllExport void timestamp(
            double _timestamp);

    /*!
     * @brief This function returns the value of member timestamp
     * @return Value of member timestamp
     */
    eProsima_user_DllExport double timestamp() const;

    /*!
     * @brief This function returns a reference to member timestamp
     * @return Reference to member timestamp
     */
    eProsima_user_DllExport double& timestamp();

    /*!
     * @brief This function copies the value in member startRingIndex
     * @param _startRingIndex New value to be copied in member startRingIndex
     */
    eProsima_user_DllExport void startRingIndex(
            const std::vector<int32_t>& _startRingIndex);

    /*!
     * @brief This function moves the value in member startRingIndex
     * @param _startRingIndex New value to be moved in member startRingIndex
     */
    eProsima_user_DllExport void startRingIndex(
            std::vector<int32_t>&& _startRingIndex);

    /*!
     * @brief This function returns a constant reference to member startRingIndex
     * @return Constant reference to member startRingIndex
     */
    eProsima_user_DllExport const std::vector<int32_t>& startRingIndex() const;

    /*!
     * @brief This function returns a reference to member startRingIndex
     * @return Reference to member startRingIndex
     */
    eProsima_user_DllExport std::vector<int32_t>& startRingIndex();
    /*!
     * @brief This function copies the value in member endRingIndex
     * @param _endRingIndex New value to be copied in member endRingIndex
     */
    eProsima_user_DllExport void endRingIndex(
            const std::vector<int32_t>& _endRingIndex);

    /*!
     * @brief This function moves the value in member endRingIndex
     * @param _endRingIndex New value to be moved in member endRingIndex
     */
    eProsima_user_DllExport void endRingIndex(
            std::vector<int32_t>&& _endRingIndex);

    /*!
     * @brief This function returns a constant reference to member endRingIndex
     * @return Constant reference to member endRingIndex
     */
    eProsima_user_DllExport const std::vector<int32_t>& endRingIndex() const;

    /*!
     * @brief This function returns a reference to member endRingIndex
     * @return Reference to member endRingIndex
     */
    eProsima_user_DllExport std::vector<int32_t>& endRingIndex();
    /*!
     * @brief This function copies the value in member pointColInd
     * @param _pointColInd New value to be copied in member pointColInd
     */
    eProsima_user_DllExport void pointColInd(
            const std::vector<int32_t>& _pointColInd);

    /*!
     * @brief This function moves the value in member pointColInd
     * @param _pointColInd New value to be moved in member pointColInd
     */
    eProsima_user_DllExport void pointColInd(
            std::vector<int32_t>&& _pointColInd);

    /*!
     * @brief This function returns a constant reference to member pointColInd
     * @return Constant reference to member pointColInd
     */
    eProsima_user_DllExport const std::vector<int32_t>& pointColInd() const;

    /*!
     * @brief This function returns a reference to member pointColInd
     * @return Reference to member pointColInd
     */
    eProsima_user_DllExport std::vector<int32_t>& pointColInd();
    /*!
     * @brief This function copies the value in member pointRange
     * @param _pointRange New value to be copied in member pointRange
     */
    eProsima_user_DllExport void pointRange(
            const std::vector<float>& _pointRange);

    /*!
     * @brief This function moves the value in member pointRange
     * @param _pointRange New value to be moved in member pointRange
     */
    eProsima_user_DllExport void pointRange(
            std::vector<float>&& _pointRange);

    /*!
     * @brief This function returns a constant reference to member pointRange
     * @return Constant reference to member pointRange
     */
    eProsima_user_DllExport const std::vector<float>& pointRange() const;

    /*!
     * @brief This function returns a reference to member pointRange
     * @return Reference to member pointRange
     */
    eProsima_user_DllExport std::vector<float>& pointRange();
    /*!
     * @brief This function sets a value in member imuAvailable
     * @param _imuAvailable New value for member imuAvailable
     */
    eProsima_user_DllExport void imuAvailable(
            uint16_t _imuAvailable);

    /*!
     * @brief This function returns the value of member imuAvailable
     * @return Value of member imuAvailable
     */
    eProsima_user_DllExport uint16_t imuAvailable() const;

    /*!
     * @brief This function returns a reference to member imuAvailable
     * @return Reference to member imuAvailable
     */
    eProsima_user_DllExport uint16_t& imuAvailable();

    /*!
     * @brief This function sets a value in member odomAvailable
     * @param _odomAvailable New value for member odomAvailable
     */
    eProsima_user_DllExport void odomAvailable(
            uint16_t _odomAvailable);

    /*!
     * @brief This function returns the value of member odomAvailable
     * @return Value of member odomAvailable
     */
    eProsima_user_DllExport uint16_t odomAvailable() const;

    /*!
     * @brief This function returns a reference to member odomAvailable
     * @return Reference to member odomAvailable
     */
    eProsima_user_DllExport uint16_t& odomAvailable();

    /*!
     * @brief This function sets a value in member imuRollInit
     * @param _imuRollInit New value for member imuRollInit
     */
    eProsima_user_DllExport void imuRollInit(
            float _imuRollInit);

    /*!
     * @brief This function returns the value of member imuRollInit
     * @return Value of member imuRollInit
     */
    eProsima_user_DllExport float imuRollInit() const;

    /*!
     * @brief This function returns a reference to member imuRollInit
     * @return Reference to member imuRollInit
     */
    eProsima_user_DllExport float& imuRollInit();

    /*!
     * @brief This function sets a value in member imuPitchInit
     * @param _imuPitchInit New value for member imuPitchInit
     */
    eProsima_user_DllExport void imuPitchInit(
            float _imuPitchInit);

    /*!
     * @brief This function returns the value of member imuPitchInit
     * @return Value of member imuPitchInit
     */
    eProsima_user_DllExport float imuPitchInit() const;

    /*!
     * @brief This function returns a reference to member imuPitchInit
     * @return Reference to member imuPitchInit
     */
    eProsima_user_DllExport float& imuPitchInit();

    /*!
     * @brief This function sets a value in member imuYawInit
     * @param _imuYawInit New value for member imuYawInit
     */
    eProsima_user_DllExport void imuYawInit(
            float _imuYawInit);

    /*!
     * @brief This function returns the value of member imuYawInit
     * @return Value of member imuYawInit
     */
    eProsima_user_DllExport float imuYawInit() const;

    /*!
     * @brief This function returns a reference to member imuYawInit
     * @return Reference to member imuYawInit
     */
    eProsima_user_DllExport float& imuYawInit();

    /*!
     * @brief This function sets a value in member initialGuessX
     * @param _initialGuessX New value for member initialGuessX
     */
    eProsima_user_DllExport void initialGuessX(
            float _initialGuessX);

    /*!
     * @brief This function returns the value of member initialGuessX
     * @return Value of member initialGuessX
     */
    eProsima_user_DllExport float initialGuessX() const;

    /*!
     * @brief This function returns a reference to member initialGuessX
     * @return Reference to member initialGuessX
     */
    eProsima_user_DllExport float& initialGuessX();

    /*!
     * @brief This function sets a value in member initialGuessY
     * @param _initialGuessY New value for member initialGuessY
     */
    eProsima_user_DllExport void initialGuessY(
            float _initialGuessY);

    /*!
     * @brief This function returns the value of member initialGuessY
     * @return Value of member initialGuessY
     */
    eProsima_user_DllExport float initialGuessY() const;

    /*!
     * @brief This function returns a reference to member initialGuessY
     * @return Reference to member initialGuessY
     */
    eProsima_user_DllExport float& initialGuessY();

    /*!
     * @brief This function sets a value in member initialGuessZ
     * @param _initialGuessZ New value for member initialGuessZ
     */
    eProsima_user_DllExport void initialGuessZ(
            float _initialGuessZ);

    /*!
     * @brief This function returns the value of member initialGuessZ
     * @return Value of member initialGuessZ
     */
    eProsima_user_DllExport float initialGuessZ() const;

    /*!
     * @brief This function returns a reference to member initialGuessZ
     * @return Reference to member initialGuessZ
     */
    eProsima_user_DllExport float& initialGuessZ();

    /*!
     * @brief This function sets a value in member initialGuessRoll
     * @param _initialGuessRoll New value for member initialGuessRoll
     */
    eProsima_user_DllExport void initialGuessRoll(
            float _initialGuessRoll);

    /*!
     * @brief This function returns the value of member initialGuessRoll
     * @return Value of member initialGuessRoll
     */
    eProsima_user_DllExport float initialGuessRoll() const;

    /*!
     * @brief This function returns a reference to member initialGuessRoll
     * @return Reference to member initialGuessRoll
     */
    eProsima_user_DllExport float& initialGuessRoll();

    /*!
     * @brief This function sets a value in member initialGuessPitch
     * @param _initialGuessPitch New value for member initialGuessPitch
     */
    eProsima_user_DllExport void initialGuessPitch(
            float _initialGuessPitch);

    /*!
     * @brief This function returns the value of member initialGuessPitch
     * @return Value of member initialGuessPitch
     */
    eProsima_user_DllExport float initialGuessPitch() const;

    /*!
     * @brief This function returns a reference to member initialGuessPitch
     * @return Reference to member initialGuessPitch
     */
    eProsima_user_DllExport float& initialGuessPitch();

    /*!
     * @brief This function sets a value in member initialGuessYaw
     * @param _initialGuessYaw New value for member initialGuessYaw
     */
    eProsima_user_DllExport void initialGuessYaw(
            float _initialGuessYaw);

    /*!
     * @brief This function returns the value of member initialGuessYaw
     * @return Value of member initialGuessYaw
     */
    eProsima_user_DllExport float initialGuessYaw() const;

    /*!
     * @brief This function returns a reference to member initialGuessYaw
     * @return Reference to member initialGuessYaw
     */
    eProsima_user_DllExport float& initialGuessYaw();

    /*!
     * @brief This function copies the value in member cloud_deskewed
     * @param _cloud_deskewed New value to be copied in member cloud_deskewed
     */
    eProsima_user_DllExport void cloud_deskewed(
            const DDS_LidarCloud& _cloud_deskewed);

    /*!
     * @brief This function moves the value in member cloud_deskewed
     * @param _cloud_deskewed New value to be moved in member cloud_deskewed
     */
    eProsima_user_DllExport void cloud_deskewed(
            DDS_LidarCloud&& _cloud_deskewed);

    /*!
     * @brief This function returns a constant reference to member cloud_deskewed
     * @return Constant reference to member cloud_deskewed
     */
    eProsima_user_DllExport const DDS_LidarCloud& cloud_deskewed() const;

    /*!
     * @brief This function returns a reference to member cloud_deskewed
     * @return Reference to member cloud_deskewed
     */
    eProsima_user_DllExport DDS_LidarCloud& cloud_deskewed();
    /*!
     * @brief This function copies the value in member cloud_corner
     * @param _cloud_corner New value to be copied in member cloud_corner
     */
    eProsima_user_DllExport void cloud_corner(
            const DDS_LidarCloud& _cloud_corner);

    /*!
     * @brief This function moves the value in member cloud_corner
     * @param _cloud_corner New value to be moved in member cloud_corner
     */
    eProsima_user_DllExport void cloud_corner(
            DDS_LidarCloud&& _cloud_corner);

    /*!
     * @brief This function returns a constant reference to member cloud_corner
     * @return Constant reference to member cloud_corner
     */
    eProsima_user_DllExport const DDS_LidarCloud& cloud_corner() const;

    /*!
     * @brief This function returns a reference to member cloud_corner
     * @return Reference to member cloud_corner
     */
    eProsima_user_DllExport DDS_LidarCloud& cloud_corner();
    /*!
     * @brief This function copies the value in member cloud_surface
     * @param _cloud_surface New value to be copied in member cloud_surface
     */
    eProsima_user_DllExport void cloud_surface(
            const DDS_LidarCloud& _cloud_surface);

    /*!
     * @brief This function moves the value in member cloud_surface
     * @param _cloud_surface New value to be moved in member cloud_surface
     */
    eProsima_user_DllExport void cloud_surface(
            DDS_LidarCloud&& _cloud_surface);

    /*!
     * @brief This function returns a constant reference to member cloud_surface
     * @return Constant reference to member cloud_surface
     */
    eProsima_user_DllExport const DDS_LidarCloud& cloud_surface() const;

    /*!
     * @brief This function returns a reference to member cloud_surface
     * @return Reference to member cloud_surface
     */
    eProsima_user_DllExport DDS_LidarCloud& cloud_surface();

    /*!
     * @brief This function returns the maximum serialized size of an object
     * depending on the buffer alignment.
     * @param current_alignment Buffer alignment.
     * @return Maximum serialized size.
     */
    eProsima_user_DllExport static size_t getMaxCdrSerializedSize(
            size_t current_alignment = 0);

    /*!
     * @brief This function returns the serialized size of a data depending on the buffer alignment.
     * @param data Data which is calculated its serialized size.
     * @param current_alignment Buffer alignment.
     * @return Serialized size.
     */
    eProsima_user_DllExport static size_t getCdrSerializedSize(
            const DDS_LidarCloudInfo& data,
            size_t current_alignment = 0);


    /*!
     * @brief This function serializes an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void serialize(
            eprosima::fastcdr::Cdr& cdr) const;

    /*!
     * @brief This function deserializes an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void deserialize(
            eprosima::fastcdr::Cdr& cdr);



    /*!
     * @brief This function returns the maximum serialized size of the Key of an object
     * depending on the buffer alignment.
     * @param current_alignment Buffer alignment.
     * @return Maximum serialized size.
     */
    eProsima_user_DllExport static size_t getKeyMaxCdrSerializedSize(
            size_t current_alignment = 0);

    /*!
     * @brief This function tells you if the Key has been defined for this type
     */
    eProsima_user_DllExport static bool isKeyDefined();

    /*!
     * @brief This function serializes the key members of an object using CDR serialization.
     * @param cdr CDR serialization object.
     */
    eProsima_user_DllExport void serializeKey(
            eprosima::fastcdr::Cdr& cdr) const;

private:

    double m_timestamp;
    std::vector<int32_t> m_startRingIndex;
    std::vector<int32_t> m_endRingIndex;
    std::vector<int32_t> m_pointColInd;
    std::vector<float> m_pointRange;
    uint16_t m_imuAvailable;
    uint16_t m_odomAvailable;
    float m_imuRollInit;
    float m_imuPitchInit;
    float m_imuYawInit;
    float m_initialGuessX;
    float m_initialGuessY;
    float m_initialGuessZ;
    float m_initialGuessRoll;
    float m_initialGuessPitch;
    float m_initialGuessYaw;
    DDS_LidarCloud m_cloud_deskewed;
    DDS_LidarCloud m_cloud_corner;
    DDS_LidarCloud m_cloud_surface;
};

#endif // _FUSION_LOCALIZATION_H_